繁体   English   中英

下载线程中的PARTIAL_WAKE_LOCK与SCREEN_DIM_WAKE_LOCK

[英]PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK in download thread

我有一个服务,它产生一个下载线程,有时下载大文件。 我意识到,一旦手机进入睡眠状态,下载线程就会显着减慢,然后停止。

一个明显的补救措施,一个唤醒锁。 所以我认为可以获得一个partial_wake_lock,只是为了让cpu处理下载。 但这不起作用,相同的行为,下载速度减慢,然后在屏幕关闭时停止。

然后我尝试了screen_dim_wake_lock。 这一次,屏幕保持打开(变暗),下载保持全速,直到完成,唤醒锁定,然后电话睡觉。

我的问题是,为什么我不能保持我的线程运行时,像在screen_dim_wake_lock期间一样持有partial_wake_lock? 关于这两者之间的区别是否存在一些无证的行为? 是因为我不是在UI线程上运行吗?

编辑:

我添加了一个wifilock。 wifi没有进入睡眠状态,但我的线程仍然死亡。 如果某个其他进程唤醒系统,则下载将以正常速度继续,然后再次减速。 如果我唤醒手机,它将以正常速度继续,而不是在屏幕熄灭时再次减速。 似乎线程被系统推入后台。 我想知道我是否可以阻止这一点。

我有一个同样的问题,一个服务不断下载大量的URL。 最好的办法是像你一样使用screen_dim_wake_lock,把你的服务前台,描述在这里

通过这种方式,屏幕始终处于打开状态,因此使用WI-FI界面也是如此。 相反,如果你让手机闲置一段时间然后屏幕关闭,手机将进入睡眠模式,15分钟后WIFI也将关闭!

所以,另一种方法是使用partial_wake_lock(只有CPU打开)并更改手机的设置,以便WIFI始终开启(可能这看起来像你获得的WIFI_LOCK ..):

  • 从主屏幕转到系统或设置然后
  • 选择无线和网络
  • 选择WI-FI设置
  • 按菜单,然后选择高级
  • 按Wi-Fi睡眠政策并将其更改为从不

然后,即使在关闭屏幕的睡眠模式下,您的服务也能正常工作。 这里唯一的问题是:

如果你松散WIFI连接一段时间,那么Android可能会因为它不活动而终止你的服务..但是如果你的手机总是连接到WIFI网络并且稳定性很好那么一切都会正常工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM