我通过使用生命周期差异来解决这个问题。
如果触摸主页按钮 onStop() 被调用,但如果应用程序关闭,则 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 boolean ;
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();
}