当屏幕关闭时,我的应用程序服务暂停.
我使用以下代码启动我的服务:
if (mSharedPrefs.getBoolean("prefAutoUpdatesMain", false)) {
Intent svc = new Intent(this, MyService.class);
startService(svc);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免服务暂停?
我在MyService中要做的是从Internet下载一些数据.如果我理解了我必须遵循的过程:
在下载数据方法时没有引用wakeLock,它是具有wakeLock的应用程序,是否正确?
默认情况下,唤醒锁是引用计数.我认为没有引用计数的wakeLock更好,一定要释放它,我错了吗?
jsc*_*arf 66
部分WakeLock就是你想要的.即使屏幕关闭,它也会保持CPU打开.
获得:
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)
发布:
wakeLock.release();
Run Code Online (Sandbox Code Playgroud)
WakeLock还支持引用计数,因此您的服务中可能有多个需要唤醒功能的东西,并且当它们都不活动时,设备可以休眠.
需要注意的事项:
如果您使用引用计数,请确保通过您的应用程序的所有控制路径将正确获取/释放...最后块在这里派上用场.
还要确保不经常使用WakeLocks并持续很短的时间.他们在电池使用方面加起来.获取锁定,开展业务,并尽快发布.
| 归档时间: |
|
| 查看次数: |
51917 次 |
| 最近记录: |