我正在为我的工作制作一个管理应用程序,但问题是我需要让设备24/7保持清醒,这样服务才能向我的服务器发送小的UDP数据包。
我的搭载android 4.2.2的Alcatel One Touch无论如何都会睡着。
我给我的活动添加了一个唤醒锁,它起作用了,但大约8个小时后,它似乎冻结了活动,手机就睡着了。
我将唤醒锁移动到服务,但没有任何反应,Wakelock检测器没有检测到唤醒锁。
我尝试使用startwakefulservice,但同样的情况也发生了,没有检测到唤醒锁,它就睡着了。
它总是在20-30分钟后睡着。
我试过使用第三方程序,但都不起作用。
可能的原因是什么?
我扎根了我的手机,有没有办法改变设置,使CPU永远不会睡着?有什么我可以改变的吗?活动销毁策略是否可以更改?
我尝试了第三方程序与安卓4.1.2的摩托罗拉XT914,它确实检测到它,所以我猜是手机…
电话总是插在插头上,没有人会使用它,所以所有完成工作的东西都是有效的。
完全唤醒锁似乎工作完美,但我需要屏幕成为锁定,如果它不能关闭…
发布于 2015-06-11 17:56:07
使用此技术可以在Service启动时保持CPU运行:
private PowerManager.WakeLock wakeLock;
...
@Override
public void onCreate() {
super.onCreate();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
wakeLock.acquire();
}
@Override
public void onDestroy() {
wakeLock.release();
super.onDestroy();
}不要忘记在清单中添加此权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>发布于 2015-06-11 18:14:58
您的问题可能是服务正在被系统销毁,以使资源可供其他应用程序使用。Wakelock确保设备不会进入休眠状态,而不是系统在需要时不会终止进程。如果是这样的话,wakelock也被释放了,你唯一能做的(除了自定义的Android构建)就是让你的服务作为(启动的(未绑定的))前台服务运行--这样系统就不太可能回收你的服务了。
此外,请确保服务是“粘滞”的,并且系统会在可能的情况下重新创建它。
您还可以将一些广播接收器注册到常规事件,以便在服务关闭时重新触发该服务。
https://stackoverflow.com/questions/30769817
复制相似问题