【问题标题】:How to stop application/service from destroying?如何阻止应用程序/服务被破坏?
【发布时间】:2013-02-04 16:19:25
【问题描述】:

我有一个应用程序,它有一个带有“开始记录”按钮的单一屏幕,用于启动服务。按下后,按钮变为“停止记录”按钮并停止服务 onClick。该服务基本上每分钟抓取一些数据并将其写入几个 SQLite 表。

该应用程序旨在打开,开始记录..然后最小化并留在后台运行。但是,问题是,一段时间后,Android 销毁/停止进程/服务/活动,使其不再记录数据,当应用程序重新打开时,屏幕重置,再次显示“开始记录”而不是“停止记录”,因为应用程序已重新启动。

我正在寻找能够在后台运行并尽可能长时间地收集数据的应用程序/服务,并且让活动保持打开状态或处于打开状态时,我可以停止记录而不是重置屏幕。基本上,应用程序在记录时永远最小化,而不是关闭。

感谢您的任何帮助或建议。

【问题讨论】:

  • 在服务中使用 startforeground(并从 onStartCommand 返回 START_STICKY)

标签: java android service android-activity ondestroy


【解决方案1】:

你应该实现 Foreground。

要请求您的服务在前台运行,请调用 startForeground()。该方法有两个参数:唯一标识通知的整数和状态栏的通知。欲了解更多信息,请访问:

http://developer.android.com/guide/components/services.html#Foreground

【讨论】:

    【解决方案2】:

    您正在寻找的是粘性startService。这将允许服务运行,直到系统内存不足。有关服务的更多信息,请查看here

    【讨论】:

      【解决方案3】:

      问题是当操作系统耗尽内存时,如果它在后台,它会破坏你的服务。这就是为什么无法停止的服务(如播放 mp3)是前台服务的原因。因此,如果您绝对想让服务保持活力,您可以让服务在前台运行。我知道这可能不是你想要的,但感觉你别无选择。我认为,将服务置于前台是告诉 Android 你的服务不能被杀死的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-12
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        • 2012-09-03
        相关资源
        最近更新 更多