我可以从AsyncTask
实例化WakefulBroadcastReceiver
(请参阅my motivation for favouring AsyncTask
over Service
),例如
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();
}
}
但这是值得推荐的吗?特别是,are there life cycle issues与AsyncTask
中的WakefulBroadcastReceiver
实例化相关联?例如,我的AsyncTask
可以过早被杀吗?
(我知道我可以wrap the AsyncTask inside a service,但这看起来有点矫枉过正?)
从AsyncTask
实例化WakefulBroadcastReceiver
是不明智的,因为一旦BroadcastReceiver
方法返回,系统将onReceive()
实例化的任何内容都视为可用,即,系统可能会杀死AsyncTask
。感谢corsair992。
有关可充足流程的详细信息,请参阅process lifecycle。