É recomendável instanciar uma AsyncTask a partir de um WakefulBroadcastReceiver?
Eu posso instanciar umAsyncTask
deWakefulBroadcastReceiver
(Vejominha motivação para favorecerAsyncTask
sobreService
), por exemplo.,
public abstract class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
new AsyncTask<Void,Void,Void>(){
@Override
protected Void doInBackground(Void... v) {
while (true) {
SystemClock.sleep(7000);
Log.w("", "alive");
}
}
}.execute();
}
}
Mas isso é recomendável? Em particular,existem problemas no ciclo de vida associado a instanciar umAsyncTask
a partir de umWakefulBroadcastReceiver
? Por exemplo, meuAsyncTask
ser morto prematuramente?
(Eu sei que possoagrupar o AsyncTask dentro de um serviço, mas isso parece exagero?)
RespondaInstanciando umAsyncTask
a partir de umWakefulBroadcastReceiver
é desaconselhável, pois qualquer coisa instanciada por umBroadcastReceiver
será considerado eliminável pelo sistema quando oonReceive()
método retorna, ou seja, o sistema pode matarAsyncTask
. Graças acorsair992.
Vejociclo de vida do processo para mais detalhes sobre processos executáveis.