ANDROIDアプリケーション終了
1654 ワード
androidではfinish()もsystem(0)も単一activityを終了するしかありません.プロセスなどを殺すなどの方法はすべてだめです~~~問題を解決します:
マルチactivityでは、A->B->C->Dなどのプログラム全体を終了します.この場合、Dから直接プログラムを終了する必要があります.
Androidのウィンドウクラスが歴史スタックを提供していることを知っています.stackの原理で巧みに実現することができます.ここでは、DウィンドウがAウィンドウを開くときにIntentに直接マークIntentを追加します.FLAG_ACTIVITY_CLEAR_TOPでは,再びAをオンにすると,そのプロセス空間のすべてのActivityがクリアされる.Dでは、次のコードを使用します.
そしてAにコードを入れる
注意A activityは単列でなければなりません
従ってAのManifest.xmlはandroid:launchMode="singleTop"に構成されています
マルチactivityでは、A->B->C->Dなどのプログラム全体を終了します.この場合、Dから直接プログラムを終了する必要があります.
Androidのウィンドウクラスが歴史スタックを提供していることを知っています.stackの原理で巧みに実現することができます.ここでは、DウィンドウがAウィンドウを開くときにIntentに直接マークIntentを追加します.FLAG_ACTIVITY_CLEAR_TOPでは,再びAをオンにすると,そのプロセス空間のすべてのActivityがクリアされる.Dでは、次のコードを使用します.
Intent intent = new Intent();
intent.setClass(D.this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // FLAG
startActivity(intent);
finish();
そしてAにコードを入れる
Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
//
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
finish();
}
}
注意A activityは単列でなければなりません
従ってAのManifest.xmlはandroid:launchMode="singleTop"に構成されています