我问了一个关于保持服务活着的问题,但我找不到解决方案,所以我有另一个更简单的问题.
android doc说如果android在低内存状态下返回onStartCommand时使用START_STICKY杀死一个服务,它将重新创建服务,如果我是正确的.
但是这段服务在一段时间后被杀死并在运行任务中消失但是没有重新创建!我在手机上运行Android 4.4.2中的这项服务,当屏幕打开时,它存活了大约20分钟但是当屏幕关闭时它在大约3或4分钟后消失...在我的平板电脑上(再次安装4.4.2)它停留的时间更长,大约4或5个小时,然后又消失了(我在不同的测试中得到了不同的结果).我甚至在android 5上测试它,结果类似于Android 4.4.2的平板电脑
我在这里错过了什么吗?当我们使用return START_STICKY直到我调用stopService时,我认为服务不会被破坏
这是我的服务:
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onDestroy() {
super.onDestroy();
}
}
Run Code Online (Sandbox Code Playgroud)
sry for bad english :)
可能对某人有用 -
此问题与基于AOSP的ROM的设备无关.因此,android 4.4.2版本不是问题.
所以有一些设备(HUAWEI,LAVA,XIAOMI)附带预先安装的启动管理器或节能器,并且它们运行在定制的Android ROM上.所以这些设备通常不会接受粘性服务.
所以可能的选择是实现看门狗定时器之类的东西并检查其间的服务,如果没有启动,服务可以再次运行.可能的影响可能是电池消耗.
| 归档时间: |
|
| 查看次数: |
3286 次 |
| 最近记录: |