0

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

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

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

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

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

谢谢 :)

4

1 回答 1

0

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

但是,如果某些服务神秘消失,用户会错过它们。例如,Android 附带的默认音乐播放器应用程序使用一个服务来播放实际的音乐。这样,用户可以在继续将手机用于其他目的的同时听音乐。该服务仅在用户进入并按下音乐播放器活动中的停止按钮时停止。如果该服务意外关闭,用户可能想知道出了什么问题。

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

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

于 2017-03-24T01:24:12.850 回答