我在android中的一个活动中使用静态变量(它不是主要活动)。但是当我进入主活动并按下后退按钮时,静态值保持不变。后退按钮不会终止主进程。为什么?
答案 0 :(得分:8)
使用后退按钮会破坏活动,不 应用。所有活动都是在Dalvik VM中运行的应用程序的一部分。 应用程序仍然存在,正在运行(即使所有活动都已被销毁),直到系统确定它需要资源并终止进程。
因此,只要进程/应用程序正在运行,您的静态成员就会保留在内存中。
如果您尝试运行一些内存密集型应用程序或使用某个任务管理器关闭正在运行的应用程序,您可能会看到静态值重置。
答案 1 :(得分:1)
试试这个,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
finish();
System.exit(0);
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:1)
用户按下后退按钮以导航主要活动并不能保证活动将被销毁。它只是将您的UI(活动)移动到不被看到。请参阅https://developer.android.com/reference/android/app/Activity.html和https://developer.android.com/training/basics/activity-lifecycle/index.html。
更新
以下是该第二个网页的一些文字摘要: 从图1文字: “当用户离开您的活动时,系统会调用onStop()来停止活动(1)。如果用户在活动停止时返回,则系统调用onRestart()(2),然后快速调用onStart()(3)和onResume()(4)。请注意,无论什么情况导致活动停止,系统总是在调用onStop()之前调用onPause()。“
并且“注意:因为系统在停止时将系统内存中的Activity实例保留,...”
并且:“当您的活动接到对onStop()方法的调用时,......一旦您的活动停止,系统可能会在需要恢复系统内存时销毁该实例。在极端情况下,系统可能会在不调用活动的最终onDestroy()回调函数的情况下终止您的应用程序进程.... “
以上所有内容都证明,当用户离开您的活动时(通过场景中的后退按钮),它不一定会被破坏。它最初只是停止了。