我通过使用生命周期差异解决了这个问题。
如果触摸了home按钮onStop()被调用,但是如果app关闭onStop()和onDestroy()被调用这意味着如果任务在后台被终止onDestroy()不被调用。我通过sharedPreferences跟踪这种情况。
@Override
protected void onStop() {
SharedPreferencesUtilities.putBoolean("isFromOnStop", true);
super.onStop();
}
@Override
protected void onDestroy() {
SharedPreferencesUtilities.putBoolean("isFromOnStop", false);
super.onDestroy();
android.os.Process.killProcess(android.os.Process.myPid());
}
然后在onCreate()我检查了这个sharedPreferences布尔;
if(SharedPreferencesUtilities.getBoolean("isFromOnStop", false)) {
SharedPreferencesUtilities.putBoolean("isFromOnStop", false);
((MainFragmentActivity)mContext).finish();
Toast.makeText(mContext, "Ooops app was killed in background", Toast.LENGTH_SHORT).show();
}
无论你对任务杀手的看法是什么,在应用程序处于被任务杀手杀死后恢复的状态中仍然存在问题。 – rajath
@rajath,这是downvote的原因?如果你杀了一个应用程序,你期望什么?如果它被Android系统杀死,问题仍然存在? – JJ86