今天碰到一個問題,發現自己的應用程式關閉了,但是手機上顯示還在運行,調試發現和ActivityGroup有關係,
繼承自ActivityGroup類的主類,調用finish方法時,自己可以onDestroy,但其包含的子Activity沒有finish。
採用了方法1:
1、擷取當前Activity,然後顯示調用 finish方法
Activity pActivity = getLocalActivityManager().getCurrentActivity();pActivity.finish();
結果【看調試資訊:子Activity的onDestroy方法沒有調用】
2、向子Activity 發送廣播,讓其接受到廣播後,自己調用finish方法。
sendBroadcast(new Intent(ACTION_INTENT_KILLSELF_MSG)); private BroadcastReceiver mReceiveBroadcast = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ACTION_INTENT_KILLSELF_MSG)) {finish(); }}};
結果【收到廣播,但子Activity的onDestroy方法任然沒有調用】
3、調用ActivityGroup中的destroyActivity方法
getLocalActivityManager().destroyActivity("***Activity", true);
結果【看調試資訊:子Activity的onDestroy方法沒有調用】
4、最後鬱悶,採用查詢後台進程,殺死的方法,最終解決了。
final ActivityManager am = (ActivityManager) getSystemService(Service.ACTIVITY_SERVICE); Log.d("FinishApplication :", getPackageName()); am.killBackgroundProcesses(getPackageName());
結果【程式結束後,手機後台運行進程沒有了我的應用程式】