我希望在应用程序运行后关闭它。
我目前的方法是在其中一个主要活动的OnPause()中调用finish()。
但是,在我的应用程序中有几个活动。当它从我的主要活动跳转到另一个活动时,我的主要活动将被关闭。
这不是我的例外情况。我希望我的应用程序仅在整个应用程序转到后台时关闭(例如通过Home键)
感谢。
答案 0 :(得分:1)
你不必这样做..当你按Home键时Android会自动完成它...当它需要资源时...阅读本文以获取更多http://developer.android.com/reference/android/app/Activity.html
答案 1 :(得分:-1)
您可以使用Process.killProcess(Process.myPid())杀死自己的应用程序进程。如果您不能依赖回调活动来告诉您应用程序何时失去焦点,并且考虑到您不能依赖onPause(如上所述),您原则上可以在onPause期间发布一个遗书:
_runnable = new Runnable() {
@Override
public void run() {
Process.killProcess(Process.myPid());
};
_handler = new Handler().postDelayed(_runnable, 3000);
然后让你的其他活动拦截并在onResume期间取消它:
_handler.removeCallbacks(_runnable);
(您需要一种方法来提供跨多个活动的变量访问权限。)如果取消永远不会到来,那么您的应用最终将会被杀死。
Kludgy,但我认为可能。
答案 2 :(得分:-1)
现在让我们考虑一下这是你的清单的样子。主要活动Hello启动Hello2,启动Hello3,依此类推。
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Hello" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Hello2"></activity>
<activity android:name="Hello3"></activity>
<activity android:name="Hello4"></activity>
</application>
现在创建虚拟Launcher活动(HelloStarter),它启动你的Hello活动。 请参阅更新的清单。
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloStarter" android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Hello"></activity>
<activity android:name="Hello2"></activity>
<activity android:name="Hello3"></activity>
<activity android:name="Hello4"></activity>
</application>
在你的Hello活动的onDestroy()中添加:
System.exit(0);
这有效...... !!!!