是否建议从WakefulBroadcastReceiver实例化AsyncTask?

时间:2014-08-07 04:36:40

标签: android android-asynctask android-service android-lifecycle android-broadcast

我可以从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 issuesAsyncTask中的WakefulBroadcastReceiver实例化相关联?例如,我的AsyncTask可以过早被杀吗?

(我知道我可以wrap the AsyncTask inside a service,但这看起来有点矫枉过正?)

答案

AsyncTask实例化WakefulBroadcastReceiver是不明智的,因为一旦BroadcastReceiver方法返回,系统将onReceive()实例化的任何内容都视为可用,即,系统可能会杀死AsyncTask。感谢corsair992

有关可充足流程的详细信息,请参阅process lifecycle

0 个答案:

没有答案