Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当应用程序进入后台时(通过Home键),我如何关闭它?_Android - Fatal编程技术网

Android 当应用程序进入后台时(通过Home键),我如何关闭它?

Android 当应用程序进入后台时(通过Home键),我如何关闭它?,android,Android,我想在应用程序进入后台时关闭它 我当前的方法是在一个主活动的OnPause()中调用finish() 然而,在我的应用程序中有几个活动。当它从我的主活动跳转到另一个活动时,我的主活动将关闭 我也不例外。我希望我的应用程序只有在整个应用程序进入后台时才关闭(例如,通过Home键) 谢谢。你不必那么做。。当你按Home键时,Android会自动完成。。当它需要资源的时候。。。阅读本文了解更多信息您可以使用process.killProcess(process.myPid())终止自己应用程序的进程。

我想在应用程序进入后台时关闭它

我当前的方法是在一个主活动的OnPause()中调用finish()

然而,在我的应用程序中有几个活动。当它从我的主活动跳转到另一个活动时,我的主活动将关闭

我也不例外。我希望我的应用程序只有在整个应用程序进入后台时才关闭(例如,通过Home键)


谢谢。

你不必那么做。。当你按Home键时,Android会自动完成。。当它需要资源的时候。。。阅读本文了解更多信息

您可以使用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);
(你需要一种方法来提供对多个活动中变量的访问。)如果取消从未出现,那么你的应用程序最终将被终止


我认为,但可能的是,

现在让我们考虑一下这是你的清单看起来如何。主要活动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>

这很有效

有关StackOverflow,请参见对类似[问题][1]的答复。[1] :无论哪种方式,都不要维护你的活动堆栈谢谢,但我必须这样做是为了一个特殊的原因。@dong221。。。每次从一个屏幕导航到另一个屏幕时,都会调用其onPause()方法,有时会调用onDestroy()方法。默认情况下,在主页上按键活动已完成,因此您无法自己完成。有些情况下必须完成此操作,例如在后台运行的安全应用程序。例如,请参见大通银行应用程序。说“不要这样做”不是答案,甚至也不是结束。不,退出流程是不起作用的-Android,而不是你,决定了一个流程何时应该存在或不应该存在,如果你退出一个它认为应该仍然存在的流程,它可能会重新创建它。不。One finish()的应用程序组件。人们不会扼杀他们的进程。如果你这样做了,Android很可能会重新创建它。
       <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>
     System.exit(0);