【高明鑫】010 Android之UI线程阻塞及其优化

  1. 当一个应用程序启动之后,Android系统会为这个应用程序创建一个主线程。这个线程非常重要,它负责渲染视图,分发事件到响应监听器并执行,对界面进行轮询的监听。因此,一般也叫做“UI线程”。
  2. Android系统不会给应用程序的多个元素组件,建立多个线程来执行。一个视图(activity)中的多个view组件运行在同一个UI线程当中。因此,多个view组件的监听器的执行可能会相互影响。
  3. 例如:当在UI线程当中执行耗时操作,比如访问网络,访问数据库等。则会导致UI线程阻塞。当UI线程阻塞,则屏幕会出现卡死情况。这样用户体验非常差。当线程阻塞超多5秒以后,Android系统有可能进行干预,弹出对话框询问是否关闭应用程序。

 

Android的UI两条规则:there are simply two rules to Android’s single thread model:

  1. Do not block the UI thread 不要阻塞UI线程
  2. Do not access the Android UI toolkit from outside the UI thread. 不要在UI线程之外的其他线程中对视图当中的组件进行设置。注意是对组件进行设置,组件,组件。不是组件的话继续这么干。

经典异常:

Only the original thread that created a view hierarchy can touch its views.

只有创建view的那个线程才能对其进行修改。

 

如何在其他线程当中修改view?

解决方案1: view.post()

解决方案2: Async

Thread.currentThread.getId(); 打印当前线程的ID。

猜你喜欢

转载自blog.csdn.net/yush34/article/details/89305662
今日推荐