Android 安卓:后退按钮不会终止主进程

Android 安卓:后退按钮不会终止主进程,android,button,back,Android,Button,Back,我在android中的活动中使用了一个静态变量(它不是主要活动)。但当我转到主活动并按下后退按钮时,静态值保持不变。后退按钮不会终止主进程。为什么? 试试这个 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { finish();

我在android中的活动中使用了一个静态变量(它不是主要活动)。但当我转到主活动并按下后退按钮时,静态值保持不变。后退按钮不会终止主进程。为什么?

试试这个

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK))
        {
            finish();
            System.exit(0);
        }
        return super.onKeyDown(keyCode, event);
    }
试试这个

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK))
        {
            finish();
            System.exit(0);
        }
        return super.onKeyDown(keyCode, event);
    }

用户按下后退按钮导航离开主活动并不保证活动将被销毁。它只是将您的UI(活动)移动到看不见的位置。参考和

更新:

下面是第二个网页中的一些文本片段: 从图1文本中可以看出: “当用户离开您的活动时,系统调用onStop()停止活动(1)。如果用户在活动停止时返回,系统将调用onRestart()(2),紧接着是onStart()(3)和onResume()(4)。请注意,无论是什么情况导致活动停止,系统都会在调用onRestart()之前调用onPause()()”

和“注意:由于系统在停止时将活动实例保留在系统内存中,…”

和:“当您的活动接收到对onStop()方法的调用时,…。一旦您的活动停止,系统可能会在需要恢复系统内存时销毁实例。在极端情况下,系统可能会在不调用活动的最终onDestroy()回调的情况下终止您的应用程序进程,…。”


以上所有内容都表明,当用户离开您的活动时(通过场景中的“后退”按钮),它不一定会被销毁。它只是在最初停止。

用户按“后退”按钮离开主活动并不保证活动会被销毁。它只是移动了您的UI(活动)不被看到。请参阅和

更新:

下面是第二个网页中的一些文本片段: 从图1文本中可以看出: “当用户离开您的活动时,系统调用onStop()停止活动(1)。如果用户在活动停止时返回,系统将调用onRestart()(2),紧接着是onStart()(3)和onResume()(4)。请注意,无论是什么情况导致活动停止,系统都会在调用onRestart()之前调用onPause()()”

和“注意:由于系统在停止时将活动实例保留在系统内存中,…”

和:“当您的活动接收到对onStop()方法的调用时,…。一旦您的活动停止,系统可能会在需要恢复系统内存时销毁实例。在极端情况下,系统可能会在不调用活动的最终onDestroy()回调的情况下终止您的应用程序进程,…。”


以上所有内容都表明,当用户离开您的活动时(通过场景中的“后退”按钮),它不一定被销毁。它只是在最初停止。

使用后退按钮销毁活动,而不是应用程序。所有活动都是在Dalvik VM中运行的应用程序的一部分。应用程序仍在运行(即使所有活动都已销毁),直到系统决定需要资源并终止进程

因此,只要进程/应用程序正在运行,您的静态成员将一直保留在内存中


如果尝试运行某个内存密集型应用程序或使用某个任务管理器关闭正在运行的应用程序,您可能会看到静态值重置。

使用“后退”按钮会销毁活动,而不是应用程序。所有活动都是在Dalvik VM中运行的应用程序的一部分。应用程序仍然存在,r运行(即使所有活动都已销毁),直到系统决定需要资源并终止进程

因此,只要进程/应用程序正在运行,您的静态成员将一直保留在内存中


如果您尝试运行一些内存密集型应用程序或使用任务管理器关闭正在运行的应用程序,您可能会看到静态值重置。

实际上,变量保留在内存中,直到您的应用程序被强制关闭或强制停止(在管理应用程序中)。退出应用程序并不意味着您要终止应用程序。实际上,变量将保留在内存中,直到您的应用程序被强制关闭或被强制停止(在管理应用程序中)。退出应用程序并不意味着您要终止应用程序。finish();终止应用程序?尝试调用System.exit(0);finish()之后@user1471575:正如CSmith提到的,您可以同时使用这两种方法,有do the thingedid answer…实际上finish()不会终止任务,它会一直运行,直到被Android终止。尽管此解决方案可能会让您的用户感到不安。如果您确实需要重新初始化某些状态,请执行此操作instead@CSmith系统退出(0)这不是一件好事。因为如果您正在执行任何文件读/写选项,那么数据将丢失,临时数据也可能丢失。finish();终止应用程序?尝试调用System.exit(0);after finish()@user1471575:正如CSmith所提到的,您可以同时使用这两个选项,有两个选项可以执行相同的操作编辑答案…实际上是finish()不会终止任务,它将一直运行,直到被Android终止。尽管此解决方案可能会让您的用户感到不安。如果您确实需要重新初始化某些状态,请执行此操作instead@CSmith系统退出(0)这不是一件好事。因为如果您正在执行任何文件读/写选项,数据将丢失,临时数据也可能丢失。根据::当用户按下“后退”按钮时,当前活动将从堆栈顶部弹出(活动已销毁),上一个活动将恢复(其UI的上一个状态已恢复)。这意味着活动将被销毁。!!从我给出的同一链接:如果用户按下后退按钮,当前活动将从堆栈中弹出并销毁。堆栈中的上一个活动将恢复。“”当活动被销毁时,系统