博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android service在某些Android版本上被kill后无法自动启动
阅读量:6651 次
发布时间:2019-06-25

本文共 791 字,大约阅读时间需要 2 分钟。

hot3.png

Android widget插件,需要服务一直运行,定时更新时间及天气数据,但是在Android 7.0的设备上测试没有问题,虽然锁屏一段时间后,即手机进入休眠状态后,服务会暂停,但手机在亮屏的瞬间,服务会重新启动。这是在控制功耗的情况下比较完美解决。

然鹅,运行在Android 9.0的设备上,问题就出现了,就算不锁屏运行一段时间后,服务都会自动终止,且无法重新启动,手机关机重启后,没启动。

在博客上看前辈的解决方案,大都是如下的解决方案

1、让服务持续运行而不受手机休眠的影响,要这样处理:在onCreate里面添加:pm = (PowerManager)MyApplicationHolder.getContext().getSystemService(Context.POWER_SERVICE);  wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myservice");  wl.acquire();  在onDestroy里添加:wl.release();

这种处理方案显然不适合我的这种情况。

后来在onStartCommand方法中有几个变量:

解决方案:手动返回START_STICKY,亲测这样设置后,原问题解决,且观测手机唤醒曲线,证明这样设置不会造成额外的性能消耗。

@Override  public int onStartCommand(Intent intent, int flags, int startId) {      flags = START_STICKY;      return super.onStartCommand(intent, flags, startId);  }

 

 

转载于:https://my.oschina.net/lanyu96/blog/3059768

你可能感兴趣的文章
人生规划和GTD——"知"、"得"与"合"
查看>>
ntp/系统时钟/硬件时钟/双系统下计算机时间读取的问题
查看>>
iOS 如何在整个屏幕中都能实现滑动返回的效果
查看>>
欧拉工程第66题:Diophantine equation
查看>>
php二维数组按照键值排序的方法
查看>>
backBone.js初识
查看>>
Web API 安全问题
查看>>
ubuntu 14.04 安装preforce
查看>>
Ognl底层使用
查看>>
sflow
查看>>
Codeforces 85B. Embassy Queue【段树、馋】
查看>>
产品管理流程
查看>>
iOS_数据库3_sqlite3基本操作
查看>>
Linux下php安装Redis扩展
查看>>
ANDROID L——RecyclerView,CardView进口和使用(Demo)
查看>>
jmeter经验----java 读取文件中文乱码问题
查看>>
Jmeter调试工具---HTTP Mirror Server
查看>>
js bool true false 比较
查看>>
Stream(流)的基本操作
查看>>
使用 GIT 获得Linux Kernel的代码并查看,追踪历史记录
查看>>