1.为什么要用多线程
- 提高用户体验,避免ANR;
- 异步处理事件(例如网络查看图片时,先显示占位图,等图片加载完成后,再显示图片);
- 多任务(例如一款音乐APP可以支持播放,歌词查看,列表查看等功能);
2.为什么多线程可以避免ANR
- ANR: APP在5s内未响应用户的操作,或者是BroadcastReciever 超过10s未处理完;
-
事件处理原则: 所有可能耗时的任务放在非主线程去处理;
Android主线程包括:UI绘制;控件事件处理;通俗来讲,在代码中on开头的,就是属于主线程的任务,例如onCreate()、onClick()等; 一般而言,在Activity的生命周期onCreate();onStart();onResume()的执行时间决定了APP打开的响应速度,所以不要把一些耗时操作放在里面处理,尽量放在其他线程;
3.多线程通信
- Handler (后面会继续总结,今天只是列出)
1.Handler;
2.Looper
3.Message
4.MessageQueue; - AsynsTask
谷歌帮忙封装的一种框架,即使不清楚多线程也没关系。(后面会总结)