【问题标题】:Android - app's activity stopped, started for unknown reasonAndroid - 应用程序的活动已停止,因未知原因启动
【发布时间】:2012-03-28 15:02:34
【问题描述】:

您好,我有一个长期运行的 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 主要活动停止 ...

有人知道为什么吗?谢谢。

【问题讨论】:

    标签: android oncreate onpause


    【解决方案1】:

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

    如果您有一个在后台运行的长时间运行的进程并且应该连续运行,那么最好将其设为foreground service。这会将服务置于比后台服务更高的优先级,并且应该更少被系统中断。

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

    【讨论】:

    • 感谢您的回答 Slothsberry。在这种情况下,它是设备上唯一的应用程序。
    • Android 仍然可以(并且根据我的经验永远会)杀死任何应用程序。我相信你可以绕过它,但根据我的经验,不值得与操作系统和框架的设计作斗争,而是调整你的实现。毕竟,您无法像编写自己的代码那样轻松地重写他们的代码。
    【解决方案2】:

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

    【讨论】:

    • 其实后台服务也可以被系统杀掉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多