问android8.0apphome后启动第三方后自己线程阻塞问题

logohoo 2020-01-03 04:24:28
runnable=new TimeRunnable(onRun);
timer=new Timer();
timer.schedule(runnable,delay,period);

上面三句启动了一个线程,线程里面执行简单代码,如只是int i=0;
在华为android8.0上面,如果app的activity在手机当前屏,那么线程顺利执行,
当把app home到后台后,系统回到桌面,线程顺利执行,
但是如果这时再次启动第三方应用到屏幕前,这时app的线程就出现阻塞,停了不走,卡死了,这是什么道理?
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
logohoo 2020-01-04
  • 打赏
  • 举报
回复
回复辉_alexxm

不是你说的的原因啊,在小米或oppo上运行很正常啊。home后线程一直跑的。
Robin.Zhao 2020-01-04
  • 打赏
  • 举报
回复
单看这三行代码,应该没什么问题。 因此我不确定直接原因。 看一下runnable和timer的初始化,使用,销毁是否正确;看现也可能跟生命周期相关,建议在activity中把所有的生命周期加一下打印看一下。尤其是onUserInteraction 和 onUserLeaveHint 看有没有什么区别。
logohoo 2020-01-04
  • 打赏
  • 举报
回复
确认是系统问题,不知道开始android7.0正常,但是升级到8.0就问题来了。华为手机,小米和oppo不会的。求帮忙,是系统哪里设置了吗?
辉_alexxm 2020-01-03
  • 打赏
  • 举报
回复
度下 线程 了解下线程的概念 https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B/103101?fr=aladdin 一般有以下的基本要素,特别是释放CPU资源这一块很重要; public void run() { try { Thread.sleep(timeout); if(!isCanceled) throw timeoutException; } catch (InterruptedException e) { e.printStackTrace(); } } } https://blog.csdn.net/vbirdbest/article/details/81282163 看下 这句话 (即:当多个线程在运行时,同一个CPU在某一个时刻只能服务于一个线程,可能一个线程分配一点时间,时间到了就轮到其它线程执行了,这样多个线程在来回的切换)

80,351

社区成员

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

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