android的service在关屏后运行,其子线程有时候没法执行

荒漠的远行者 2016-08-05 10:03:22
我在一个service中开启了一个定时获取天气数据的子线程,然后主进程中刷新时间,子线程用来定时刷新天气,然后手机在关屏后时间一长,时间还是显示正常的,但是天气的数据没有刷新,而且已经过了定时刷新的那个点了。如果手机屏幕亮着,那没出现过不刷新的问题。这个问题要怎么解决
...全文
389 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter_nj_RD 2016-08-22
  • 打赏
  • 举报
回复
引用 4 楼 u013760665 的回复:
[quote=引用 2 楼 crash163 的回复:] 应该是主线程在屏幕关闭后休眠了,可以从以下两个点考虑: 1、确定服务中的子线程在休眠后,还能正常执行。 2、确定主线程在休眠后,是否还在运行,有些手机会有自己的省点策略,休眠时,会关闭App的后台执行。
但是我连着手机测试,打印log信息,关屏后还是在运行的,但是晚上睡觉时没测试,早上起来就不会更新信息。难道是时间长了睡死了?[/quote] 手机长时间不处于活动状态就会进入深度睡眠状态,只保留很少的系统服务在运行,以达到省电目的。经常会遇到连wifi链接都断掉了,搞得一亮屏就有好多通知发过来。可以监听屏幕点亮的事件主动刷新一下试试
荒漠的远行者 2016-08-19
  • 打赏
  • 举报
回复
引用 2 楼 crash163 的回复:
应该是主线程在屏幕关闭后休眠了,可以从以下两个点考虑: 1、确定服务中的子线程在休眠后,还能正常执行。 2、确定主线程在休眠后,是否还在运行,有些手机会有自己的省点策略,休眠时,会关闭App的后台执行。
但是我连着手机测试,打印log信息,关屏后还是在运行的,但是晚上睡觉时没测试,早上起来就不会更新信息。难道是时间长了睡死了?
ink_s 2016-08-05
  • 打赏
  • 举报
回复 1
为了省电,屏幕休眠后线程会挂起。
网易云捕 2016-08-05
  • 打赏
  • 举报
回复
应该是主线程在屏幕关闭后休眠了,可以从以下两个点考虑: 1、确定服务中的子线程在休眠后,还能正常执行。 2、确定主线程在休眠后,是否还在运行,有些手机会有自己的省点策略,休眠时,会关闭App的后台执行。
哎,真难 2016-08-05
  • 打赏
  • 举报
回复
直接service去获取了,何必再起子线程

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧