【问题标题】:Life cycle of the application: How to do some clean jobs when the process is terminated?应用程序的生命周期:进程终止时如何做一些干净的工作?
【发布时间】:2011-02-18 05:53:26
【问题描述】:

我的应用程序非常简单,主要活动 -> 活动 1 -> 活动 2,还有另一个工作线程正在做一些下载工作。它们是在同一个进程中启动的。

我希望下载线程在所有活动都被销毁或进程结束时才终止。在 Java 中,这很简单:在 main 方法中添加一些干净的代码就可以了。但我不知道Android中的正确方法是什么。因为每一个activity都有可能被系统回收,所以我不知道把worker线程的干净代码放在哪里,也不知道整个应用的终点是什么。

谁能给我一些想法?谢谢。

【问题讨论】:

  • 在 android 2.1 下,Application.onTerminate() 似乎不起作用。我只能选择为工作线程(或服务)添加引用计数。当引用计数减少到零时,终止工作线程。
  • 我发现退出 android 应用程序让我感到困惑。我决定将工作线程更改为 Service,它将干净的代码放入其 onDestroy 方法中。显式添加菜单命令以退出整个应用程序,就像 PC 中的任何 GUI 程序一样。非常感谢那些帮助我的人。

标签: android process lifecycle


【解决方案1】:

不确定它是否有帮助,但您可以在主要活动中启动服务,并在服务的 onDestroy 方法中清理所有代码。当您的应用程序被销毁时,该服务将被销毁

onTerminate 仅适用于模拟器 - 文档中有说明。

【讨论】:

  • 非常感谢。在我选择关闭应用程序后,服务和流程的存活时间比我预期的要长得多。我开始了解android和PC之间的区别。
  • 你真的关闭了应用程序吗?我相信你不能只是关闭应用程序。它仍然在记忆中。稍后当手机需要释放资源等时,它会被 android 杀死。如果您希望您的服务在您的应用程序进入后台时结束,您应该假设使用当前活动的 onPause/onResume 方法。阅读 android 文档中的活动生命周期.. 可能使用 onPause/onResume/etc 方法创建一个抽象活动类来处理服务并从该类派生所有活动.. (虽然不是 100% 确定这是否是一个好方法 = )
  • 顺便说一句,据我所知,制作“退出”按钮在 android 中是一种不好的做法。操作系统应该解决这个问题,而不是用户
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多