0

存储应用程序全局数据

有人说,当任务进入后台时,android会清除单例实例。这是真的吗?

我意识到,当我尝试杀死前台任务(通过使用 DDMS)时,应用程序会自动重新启动它。一定有一些守护进程,不是吗?

当然,重新启动前台应用程序对我来说是安全的,因为当进程重新启动时,我可以通过调用应用程序的 onCreate 来重新初始化我的应用程序。

但是我对后台任务/应用程序感到困惑。android会杀死后台任务并以与前台应用程序相同的方式重新启动它吗?(我尝试杀死后台应用程序,它在没有重启的情况下退出)。或者dalvik会清除并回收静态实例?

如果dalvik真的很清楚singlton,我该如何避免呢?

4

1 回答 1

1

每个 Android 应用程序都在一个进程中运行。当一个任务(无论是后台还是前台)被杀死时,实际上该进程被杀死了。就像 Java 应用程序运行在 JVM 上一样,每个 JVM 实例都是一个进程。

dalvik 对象管理与 JVM 没有什么不同。我认为 dalvik 不会清除单例实例。没有引用的对象实例在 GC 上会被清除,但单例不应该。

在 Android 应用程序中,主线程是事件调度线程。它循环运行,将事件分派给适当的活动、小部件或服务。编写应用程序实际上是实现事件回调:您编写的代码中没有 main(),您永远不会拥有主线程,底层框架会在事件发生时调用您的代码。当任务转到后台时,即没有任何可见的活动,没有生成 UI 事件,因此您看到主线程正在事件队列中等待。无痛线程一文讨论了 Android 应用程序使用的线程模型。

于 2011-11-30T04:24:22.937 回答