为了账号安全,请及时绑定邮箱和手机立即绑定

屏幕关闭时,如何保持我的Android服务运行?

屏幕关闭时,如何保持我的Android服务运行?

慕斯709654 2019-11-28 13:12:52
屏幕关闭时,我的应用程序服务被暂停。我使用以下代码启动服务:if (mSharedPrefs.getBoolean("prefAutoUpdatesMain", false)) {     Intent svc = new Intent(this, MyService.class);     startService(svc);}如何避免服务暂停?我在MyService中要做的就是从Internet下载一些数据。如果我了解该过程,则必须遵循以下步骤:获取唤醒锁下载资料释放唤醒锁在下载数据方法时,没有对akeLock的引用,而是具有wakeLock的应用程序,对吗?默认情况下,唤醒锁是引用计数。我认为不带引用计数的唤醒锁更好,以确保将其释放,我错了吗?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您需要部分WakeLock。即使关闭屏幕,它也将保持CPU打开。


获得:


PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);

WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");

wakeLock.acquire();

释放:


wakeLock.release();

WakeLock还支持引用计数,因此您的服务中可能有许多需要唤醒功能的事物,并且当它们都不处于活动状态时,设备可以进入睡眠状态。


注意事项:


如果您使用引用计数,请确保通过您的应用程序的所有控制路径都将正确获取/释放...最终,此处的块将派上用场。


另外,请确保不经常短时间握住WakeLocks。它们在电池使用方面相加。获取锁,开展业务,并尽快释放。


查看完整回答
反对 回复 2019-11-28
  • 1 回答
  • 0 关注
  • 765 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信