问题描述
- Android线程间同步问题,实现主线程死等新线程处理结束
-
我的主线程是activity,在主线程里开启了线程R1,希望R1的任务处理完成后通知主线程继续,否则主线程一直等待,怎么实现?
解决方案
首先你这样的需求是违背android官方设计的,你应该考虑一下要实现你的功能,换一种需求(实现方式)是否可以。
主线程负责呈现画面增强交互,不应该阻塞,非要实现这样的功能,
可以在主线程是activity开启线程R1,然后什么事儿也不做,当R1的任务处理完成后通知主线程继续后再做事儿(绘制画面,注册事件等等)
解决方案二:
线程间同步实现--通过互斥锁和条件变量
解决方案三:
你这里说的主线程,实际上就是UI线程,这个线程是不能阻塞的,否则会ANR。
正确的做法是,当你起个线程R1时,UI线程显示个进度条,然后等R1处理完,UI线程取消进度条。
推荐使用AsyncTask。要注意,对于界面的操作,都要在UI线程处理,不要在其他线程里处理。
时间: 2024-11-02 12:55:09