2012-07-11 95 views
0

嗯,我的問題就像標題一樣簡單:有沒有辦法在應用程序內的所有正在運行的活動上調用finish()?

有沒有辦法在應用程序內的所有正在運行的活動上調用finish()?

所以我需要一種方法來完全關閉我的應用程序。

+0

[如何關閉應用程序](http://www.google.com.pk/search?q=android+how+to+close+application+programmatically) – 2012-07-11 14:25:43

+0

您可以檢查Dave Webb的答案[here] [ 1]。 [1]:http://stackoverflow.com/questions/2042222/close-application – 2012-07-11 14:27:46

+0

http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-/2034238#2034238 – CommonsWare 2012-07-11 16:23:57

回答

0
android.os.Process.killProcess(android.os.Process.myPid()); 

此代碼可以關閉您的應用程序。

+0

您也將通過這樣做來終止任何服務,因此請確保這是您的要求。仍然不是推薦的做法。 – 2012-07-11 14:34:21

+1

這不可能達到預期的效果。在任務堆棧中具有多個活動的應用程序可能會立即自動從前一活動重新啓動,這可能不是提問者想要發生的事情。 – 2012-07-11 14:40:28

0

NO

,但你可以有孔的應用像System.exit(0);但它不是recomanded way..as ANDROID沒有設計退出應用程序。

+1

不是真的 - 雖然它會終止當前進程,但它也會導致新進程自動重新啓動,以託管調用該進程之前的任務堆棧中的任何活動。 – 2012-07-11 14:42:45

1

可以實現與一個BroadcastReceiver:

在每一次活動都放:在的onCreate

private BroadcastReceiver mLoggedOutReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     finish(); 
    } 
}; 

註冊接收器:

registerReceiver(mLoggedOutReceiver, new IntentFilter(Preferences.INTENT_ACTION_LOGGED_OUT)); 

上的onDestroy:

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(mLoggedOutReceiver); 
} 

在清單的每個活動和以下過濾器:

<intent-filter> 
    <action android:name="com.example.intent.action.LOGGED_OUT" /> 
</intent-filter> 

我有意向的行動中優先級的聲明如下:

public static final String INTENT_ACTION_LOGGED_OUT = "com.example.intent.action.LOGGED_OUT";//logout 

最後所有你需要做的是從出口處調用sendBroadcast按鈕或東西:

sendBroadcast(new Intent(Preferences.INTENT_ACTION_LOGGED_OUT));//logout 

希望這會有所幫助。

+0

可悲的是它不適用於我:(仍然是一堆活動運行時,我點擊菜單像一個白癡用戶 – 2012-07-12 07:52:52

+0

但謝謝你回答我+1你,謝謝你的時間 – 2012-07-12 07:53:15

+0

你添加mLoggedOutReceiver所有活動? – Chronos 2012-07-12 13:16:23

相關問題