嗨,我有一个长期运行的Android应用程序。它适用于没有交互式用户的特殊情况。没有其他应用程序正在启动,因为没有用户。 但我看到我的应用程序的主要活动定期通过停止,创建,恢复等生命周期。我在运行时写出了一个日志文件:
2012.03.28 05:31 Main activity created 2012.03.28 05:31 Main activity started 2012.03.28 05:31 Main activity resumed 2012.03.28 05:59 Main activity paused 2012.03.28 05:59 Main activity created 2012.03.28 05:59 Main activity started 2012.03.28 05:59 Main activity resumed 2012.03.28 05:59 Main activity stopped 2012.03.28 06:12 Main activity paused 2012.03.28 06:12 Main activity created 2012.03.28 06:12 Main activity started 2012.03.28 06:12 Main activity resumed 2012.03.28 06:12 Main activity stopped 2012.03.28 06:33 Main activity paused 2012.03.28 06:33 Main activity created 2012.03.28 06:33 Main activity started 2012.03.28 06:33 Main activity resumed 2012.03.28 06:33 Main activity stopped 2012.03.28 08:08 Main activity paused 2012.03.28 08:08 Main activity created 2012.03.28 08:08 Main activity started 2012.03.28 08:08 Main activity resumed 2012.03.28 08:08 Main activity stopped ...
任何人都知道为什么?感谢。
答案 0 :(得分:1)
听起来操作系统正在扼杀您的活动,您应该做的是将其作为服务运行。 http://developer.android.com/reference/android/app/Service.html
答案 1 :(得分:1)
Android保留杀死用户不可见的任何应用程序或组件的权利(即使那些可能会被杀死,但这种情况很少发生)。大多数情况下,这是由于内存压力,系统会杀死应用程序以释放资源。
如果你有一个长时间运行的进程在后台运行并且它应该连续运行,那么最好的办法就是使它成为foreground service。这将使服务的优先级高于后台服务,并且应该被系统中断。
但是,除非您的服务需要在前台运行,否则您应该实施您的服务以优雅地处理由系统拆除和构建的服务,因为它通常会因为一个充分的理由而杀死服务。强制您的服务进入前台可能会增加损害整体设备性能的风险,并且它会强制在通知栏中出现持久通知,这会使一些用户(至少是我)感到烦恼。