存储应用程序全局数据

有人说,当任务进入后台时,android将清除单例实例。

是真的吗

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

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

但是我对后台任务/应用程序感到困惑.android会杀死前台任务并以与前台应用程序相同的方式重启它吗?(我试图杀死后台应用程序,不重新启动就退出)。否则dalvik会清除并回收静态实例?

如果达尔维克真的很清楚辛格尔顿,该如何避免?

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

dalvik对象管理中没有与JVM不同的魔术。我认为达??尔维克不会清除单例实例。没有引用的对象实例在GC上将是清楚的,但单例不应该。

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

另一个问题,前台任务和后台任务有什么区别?当前台任务变为后台任务时,我发现后台任务的主线程变为等待状态。android框架还会做什么?

@ user890973 Ive更新了我对另一个问题的回答。

:)谢谢,我读过那篇文章。AsyncTask有时会让我感到痛苦,在这种情况下,例如stackoverflow.com/questions/7034823/。Handler是管理一组任务的好方法,它使管理顺序或防止重复很容易 。谢谢你的帮助

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐