1.基本多线程概念参考java基础文集
2.AnsyncTask异步任务
3.Handler消息传递机制
多线程相关概念
应用程序(Application):为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码);
进程(Process):运行中的程序,系统调度与资源分配的一个独立单位,操作系统会为每个进程分配一段内存空间,
程序依次动态执行,经历代码加载 -> 执行 -> 执行完毕的完整过程;
线程(Thread):比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个进程中才能执行,
线程是由程序负责管理的,而进程则是由系统进行调度的;
多线程概念(Multithreading):并行地执行多条指令,将CPU的时间片按照调度算法,分配给各个线程,
实际上是分时执行的,只是这个切换的时间很短,用户感觉是同时而已;
同步:当执行某个功能,在没有得到结果之前,一直阻塞。(即必须做完一件事再做下一件)
异步:和同步相对,执行某个功能无需等待结果就可以执行下一个,完成后会通知我们。
Android线程相关概念
MainThread 主线程(UI线程):1.应用启动时自动创建;
2.一般处理事件分发和对UI控件的处理,和用户进行交互(eg:点击事件,数据更新);
3.Android4.0之后UI线程不能访问网络资源或执行耗时操作,必须开启子线程;
WorkThread 子线程(工作线程):1.可以和主线程同时进行,把主线程分配的耗时操作在后台做完,把结果返回给主线程;
规定:1.主线程不能被阻塞 (ANR : Application Not Responding 原因:主线程中进行耗时操作,造成主线程阻塞);
2.非主线程不能更新UI;
Android中实现异步并更新UI的方式:
1.使用Handler,sendMessage通知UI更新;
2.利用Activity.runOnUiThread(Runnable),传入带更新UI代码的runnable对象;
3.使用官方封好的轻量级异步类AsyncTask,是对Thread+Handler良好的封装;
(进度可控,但只适合简单异步操作,一般项目中还是会用第三方异步网络框架)
4.事物总线(EventBus?)
android中常见需要异步的操作:网络操作,图片加载,数据传输等。
网友评论