我正在开发一款每隔30秒发布到互联网上的应用。一切正常,直到屏幕熄灭。计时器似乎已经放慢了速度。发布需要5分钟。我已经尝试过获取唤醒锁定和setforeground活动但没有任何作用。这里有什么想法吗?
它作为服务运行,我用它来唤醒锁:
PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
此示例设置前景:http://developer.android.com/reference/android/app/Service.html
我还尝试使用调试器检查它是什么,但是当连接USB时一切正常。
更多细节: 要定期检查我使用:
Private void startCheck() {
mCheckHandler.sleep(30000);
}
private CheckHandler mCheckHandler = new CheckHandler();
private class CheckHandler extends Handler {
@Override
public void handleMessage(Message msg) {
Pservice.this.startCheck();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
我将其设置为每次检查互联网时获取唤醒锁定。现在它工作正常:)感谢您的帮助:)
答案 0 :(得分:2)
当屏幕熄灭时,设备最终会进入低功耗状态。这种低功耗状态基本上意味着您的代码不会被执行。需要5分钟的原因是因为其他应用程序正在唤醒设备,然后您的应用程序才有机会再次运行。
通过USB连接设备,可以防止低功耗状态发生。
听起来你的唤醒锁实际上并没有获得,或者它太快被释放了。
答案 1 :(得分:0)
您是否测试过任何其他设备,ROM,模拟器?有时,设备制造代码的方式的简单问题可能会导致类似的问题。
您使用的是什么设备和ROM?
答案 2 :(得分:0)
当屏幕关闭时,我会主动为我的Android设备加速。
另外,你提到了:
我还尝试使用调试器检查它是什么,但是当连接USB时一切正常。
尝试使用ADB Wireless进行调试,而无需使用USB电源或仅使用日志记录。