我在设备A中运行whatsapp(我们可以从现在开始称它为appX).我去管理应用程序 - >强制关闭以便appX关闭,我不再将appX视为正在运行的服务.
现在,5分钟后,我从另一台设备的appX(设备B)发送一条消息到设备A appX(我们杀了它的那个).以下是我测试的两个场景:
设备A与Android 2.1:它永远不会收到消息,因此我们可以说没有任何appX服务重新启动.如果手动用户重新启动应用程序,它仅接收消息.
设备A与android 2.3.6:出于一些神奇的原因,无论自appX被杀多久以来,只要我们从设备B发送消息 - >设备A获取消息,因此,appX的服务重新启动.注意:在关闭appX并且没有收到任何通知的情况下,我无法在管理应用程序中看到appX的任何正在运行的服务,因此这意味着一旦收到消息/通知,这个魔术服务就会重新启动
我知道这听起来很奇怪,很多人会说这是不可能的,但同样,这已经在这两款设备上进行了测试.
我试图完成同样的行为,所以任何帮助将不胜感激.
我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务很好,但是,我不希望系统重新启动该服务。
因此,为了做到这一点,我从 onStartCommand 返回了 START_NOT_STICKY 标志,如下所示:
public int onStartCommand(Intent intent, int flags, int startId) {
// do stuff here
return START_NOT_STICKY;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我故意打开一堆应用程序以创建低内存条件时,我在日志中看到了这一点:
Process com.myapp (pid 3960) has died.
Scheduling restart of crashed service com.myapp/.MyService in 5000ms
Low Memory: No more background processes.
...
Start proc com.myapp for service com.myapp/.MyService: pid=4905 uid=10031 gids={3003, 1015}
Run Code Online (Sandbox Code Playgroud)
所以我的进程在不应该重新启动时被重新启动。为什么是这样?根据文档 START_NOT_STICKY 不应允许重新启动服务。有没有其他方法可以防止服务重新启动?或者我可以知道我的服务何时重新启动?
谢谢
我的应用程序有一个活动,它启动两个服务但不绑定它们.如果我选择退出按钮退出应用程序(我在任务管理器中看不到它),应用程序启动的两个服务都会继续运行.但是,如果我转到任务管理器并终止应用程序,则两个服务都会停止.我不确定它是否是预期的行为,但我希望服务在应用程序退出后继续运行.请问任何想法.
谢谢