2012-07-11 103 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

相关问题