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では、次のコードを使用します.
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"に構成されています