【问题标题】:android background service stopping when running more other apps运行更多其他应用程序时android后台服务停止
【发布时间】:2017-03-24 01:16:37
【问题描述】:

我目前正在尝试制作一个永不结束的 android 应用程序(在冻结/停止/刷卡/杀死等时重新启动)以用于某种用途。

因此,当我从最近的应用程序列表中滑出时,我正在使用带有 onTaskRemoved() 的后台服务来重新启动服务。也可以 START_STICKY 让它在后台运行。

当在其上运行的新应用不多时,我的应用会很好地响应我的声音(它会显示 toast)。但是当时间过得很快或者上面有 3~4 个正在运行的应用程序时,它就会冻结(不响应我的声音)。

有没有办法让我的应用程序始终运行在其他应用程序之上(例如总是在按下主页按钮几秒钟时显示的最近应用程序列表的顶部)或者只是在冻结时重新启动应用程序?

请帮帮我。我知道尝试创建一个永无止境的应用程序可能听起来很奇怪,但如果你帮助我,它将对我的项目有很大帮助。

谢谢你:)

【问题讨论】:

    标签: android freeze background-service android-recents


    【解决方案1】:

    对于android不要停止服务,你可以调用startForeground()

    但是,有些服务如果神秘地被用户错过了 消失。例如,随附的默认音乐播放器应用程序 Android 使用一项服务进行实际的音乐播放。那样, 用户可以在继续使用手机的同时听音乐 其他目的。该服务仅在用户进入时停止并且 按下音乐播放器活动中的停止按钮。如果那个服务 被意外关闭,用户可能想知道什么是 错了。

    这样的服务可以声明自己是 “前景”。这将导致他们的优先级上升并使他们 不太可能被撞出内存。权衡是 服务必须维护一个通知,所以用户知道这个 服务正在声明部分前景。而且,理想情况下, 通知提供了返回某些活动的简单路径,其中 用户可以停止服务。

    为此,在您的服务的 onCreate() 中(或在 服务的生命是有意义的),调用 startForeground()。这 接受一个 Notification 和一个本地唯一的整数,就像 NotificationManager 上的 notify() 方法。它导致通知 出现并将服务移至前台优先级。以后你 可以调用 stopForeground() 恢复正常优先级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多