Ich habe eine asynctask, die etwas tut, wenn es fertig ist, will ich es übertragen, dass es getan ist.Senden von Broadcasts von asynctasks
Normalerweise würde ich tun: context.sendBroadcast(new Intent(MYINTENT));
jedoch hat asynctask keinen Kontext. Ich habe einige Antworten auf diese Fragen gesehen, die vorschlagen, einen Verweis auf den Kontext der App-Aktivität an die Asynctask zu senden. aber diese Referenz ist schlecht, wenn der Benutzer den Bildschirm dreht. und die manuelle Pflege der Referenz ist eine schlechte Lösung (erfordert zu viel von der Aktivität, die die asynctask erzeugt, die ich nicht kontrolliere). Jetzt sind die Fragen:
1) Warum ist Android so eingerichtet? Warum benötige ich sogar einen Kontext, um eine Sendung zu senden, wenn Sendungen für andere Kontexte registriert und bearbeitet werden können?
2) Gibt es eine gute Lösung für dieses Problem? (Gut = benötigt so wenig wie möglich von der Aktivität, die die Asyntask erzeugt, überlebt Rotationen, etc ..).
Übergeben Sie den Anwendungskontext mit 'Activity.getApplicationContext()' an den 'AsyncTasnk'. Der Anwendungskontext wird von der Bildschirmdrehung nicht beeinflusst, was bedeutet, dass der Verweis darauf nach einer möglichen Rotation noch gültig ist. – Paul
@Paul gut, dass das technische Problem löst, danke. Ich frage mich immer noch, warum ich sogar einen Kontext brauche, um Sendungen zu senden (von einem Designstandpunkt aus). – Oren