0

嗨,我有一个长期运行的 Android 应用程序。它适用于没有交互式用户的特殊情况。没有其他应用程序正在启动,因为没有用户。但是我看到我的应用程序的主要活动定期经历停止、创建、恢复等的生命周期。我在运行时写了一个日志文件:

2012.03.28 05:31 主要活动创建
2012.03.28 05:31 主要活动开始
2012.03.28 05:31 主要活动恢复
2012.03.28 05:59 主要活动暂停
2012.03.28 05:59 主要活动创建
2012.03.28 05:59 主要活动开始
2012.03.28 05:59 主要活动恢复
2012.03.28 05:59 主要活动停止
2012.03.28 06:12 主要活动暂停
2012.03.28 06:12 主要活动创建
2012.03.28 06:12 主要活动开始
2012.03.28 06:12 主要活动恢复
2012.03.28 06:12 主要活动停止
2012.03.28 06:33 主要活动暂停
2012.03.28 06:33 主要活动创建
2012.03.28 06:33 主要活动开始
2012.03.28 06:33 主要活动恢复
2012.03.28 06:33 主要活动停止
2012.03.28 08:08 主要活动暂停
2012.03.28 08:08 主要活动创建
2012.03.28 08:08 主要活动开始
2012.03.28 08:08 主要活动恢复
2012.03.28 08:08 主要活动停止
...

有谁知道为什么?谢谢。

4

2 回答 2

1

听起来操作系统正在扼杀您的活动,而您应该将其作为服务运行。 http://developer.android.com/reference/android/app/Service.html

于 2012-03-28T15:12:14.727 回答
1

Android 保留终止任何对用户不可见的应用程序或组件的权利(即使是可以终止的应用程序或组件,但这种情况很少发生)。大多数情况下,这是由于内存压力造成的,系统会终止应用程序以释放资源。

如果您有一个在后台运行的长时间运行的进程并且它应该连续运行,那么最好的办法是使其成为前台服务。这将使服务具有比后台服务更高的优先级,并且应该更少被系统中断。

但是,除非您的服务需要在前台运行,否则您应该实现您的服务以优雅地处理被系统拆除和建立的服务,因为它通常会出于充分的理由终止服务。将您的服务强制置于前台可能会增加损害整体设备性能的风险,并且它确实会强制在通知栏中出现持久通知,这会惹恼一些用户(至少我)。

于 2012-03-28T15:30:53.570 回答