主线程阻塞了,为啥运行没有报错?
来源:8-5 主线程进入loop循环了为什么没有ANR?
AndroidHunter
2020-02-16
老师您好,这里主线程阻塞了,为啥运行没有报错?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CountDownLatch latch = new CountDownLatch(1); // 声明计数器
Thread t = new Thread() {
public void run() {
try {
sleep(1000 * 6);
} catch (InterruptedException e) {
e.printStackTrace();
}
latch.countDown(); // 计数器减1
}
};
t.start();
try {
// 主线程阻塞了,为啥运行没有报错?
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我认为上面这种阻塞属于性能问题,不属于异常问题,只是会让界面显示延迟。
是否可以这样理解:
开发中是可以让主线程阻塞的(哪怕阻塞十几秒),只要别导致事件不能响应就行。
写回答
1回答
-
嗯,对的,只要别耽误事件响应比如说启动Activity,接收广播,按钮事件处理就没问题,因为这些事件在触发的时候AMS会启动超时检查的。
112020-02-19
相似问题