Ich möchte wissen, ob das Starten einer asynctask von einem Rundfunkempfänger als eine schlechte Praxis angesehen wird? Ich habe mich im Grunde mit dem C2DM-Server von Google registriert und dann, wenn ich den registrierten Empfänger abhöre, möchte ich ihn an meinen Server senden.
Was ist der beste Weg, dies zu erreichen?
Ja, das ist eine schlechte Praxis. Wenn Sie AsyncTask
von BroadcastReceiver
starten, kann Android Ihren Prozess beenden, wenn onReceive()
zurückgegeben wird und keine anderen aktiven Komponenten ausgeführt werden.
Der richtige Weg wäre, Service
von BroadcastReceiver
zu starten. Und dieses Service
sollte AsyncTask
verwalten. Auf diese Weise wird Android über die aktive Komponente informiert, und Android wird es nicht vorzeitig beenden (es sei denn, andere kritische Bedingungen treten auf, wie nicht genügend Speicherbedingungen).
Beginnen Sie mit Honeycomb und rufen Sie goAsync () , und dann haben Sie 10 Sekunden oder so, um Ihre Arbeit asynchron zu erledigen.
Beispiel für die Verwendung kann hier angezeigt werden.
Tags und Links android android-c2dm