0

我正在使用 android:launchMode="singleTask" 创建一个 Activity。在应用程序中,还有另一个类,未在活动中声明,它保持自己的静态最终实例和一些日志以显示在活动中。当我尝试按返回键完成活动时。正如我所说,日志显示活动已被破坏

@Override
public void onDestroy() {
    super.onDestroy();
    Log.d("I am destroyed", ".");
}

活动中的代码。但是,当我再次启动应用程序时,我发现活动仍然与我离开时相同。然后,我按返回键,手动将其从最近的应用程序列表中删除。并再次运行该应用程序。这一次,应用程序按原样显示。

按返回键完成一个应用程序并在最近的应用程序列表中删除它有什么区别?如果我想像普通应用一样完成应用,我该怎么办?

4

2 回答 2

0

每个 android 应用程序都有自己的进程,并且在该进程中,还有一个活动可以多次启动和完成而不会结束进程。

静态变量不会在 Activity 结束时超出范围,但仅在进程最终结束时才会超出范围。

您可以通过调用来结束整个过程,System.exit(0)但是通常不鼓励这种事情,更好的解决方案是在活动被销毁时重新初始化相关值。

编辑:有关关闭 Android 应用程序的更多详细信息,请参阅此帖子:

如何关闭安卓应用程序?

于 2012-09-22T15:06:26.807 回答
0

“退出”您的应用程序并不意味着它已完成。Android 决定何时完成,如果有的话。这是设计使然,旨在提供应用程序的快速启动并且运行良好。您没有显示任何代码,所以这只是一个猜测,但您可能在 onCreate() 中做的太多而忽略了 onResume()。看一下 Android 活动生命周期:

http://developer.android.com/reference/android/app/Activity.html#Lifecycle

于 2012-09-22T15:09:04.670 回答