首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的服务和第三方程序上的唤醒锁定完全不起作用

我的服务和第三方程序上的唤醒锁定完全不起作用
EN

Stack Overflow用户
提问于 2015-06-11 08:55:41
回答 2查看 93关注 0票数 0

我正在为我的工作制作一个管理应用程序,但问题是我需要让设备24/7保持清醒,这样服务才能向我的服务器发送小的UDP数据包。

我的搭载android 4.2.2的Alcatel One Touch无论如何都会睡着。

我给我的活动添加了一个唤醒锁,它起作用了,但大约8个小时后,它似乎冻结了活动,手机就睡着了。

我将唤醒锁移动到服务,但没有任何反应,Wakelock检测器没有检测到唤醒锁。

我尝试使用startwakefulservice,但同样的情况也发生了,没有检测到唤醒锁,它就睡着了。

它总是在20-30分钟后睡着。

我试过使用第三方程序,但都不起作用。

可能的原因是什么?

我扎根了我的手机,有没有办法改变设置,使CPU永远不会睡着?有什么我可以改变的吗?活动销毁策略是否可以更改?

我尝试了第三方程序与安卓4.1.2的摩托罗拉XT914,它确实检测到它,所以我猜是手机…

电话总是插在插头上,没有人会使用它,所以所有完成工作的东西都是有效的。

完全唤醒锁似乎工作完美,但我需要屏幕成为锁定,如果它不能关闭…

EN

回答 2

Stack Overflow用户

发布于 2015-06-11 17:56:07

使用此技术可以在Service启动时保持CPU运行:

代码语言:javascript
复制
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();
}

不要忘记在清单中添加此权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK"/>
票数 0
EN

Stack Overflow用户

发布于 2015-06-11 18:14:58

您的问题可能是服务正在被系统销毁,以使资源可供其他应用程序使用。Wakelock确保设备不会进入休眠状态,而不是系统在需要时不会终止进程。如果是这样的话,wakelock也被释放了,你唯一能做的(除了自定义的Android构建)就是让你的服务作为(启动的(未绑定的))前台服务运行--这样系统就不太可能回收你的服务了。

此外,请确保服务是“粘滞”的,并且系统会在可能的情况下重新创建它。

您还可以将一些广播接收器注册到常规事件,以便在服务关闭时重新触发该服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30769817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档