欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Handler机制初步分析

程序员文章站 2022-09-03 08:09:36
Android Handler机制简单分析 本文一切从简,将围绕一下流程展开叙述: A[what]-->B[why] B-->C[how]...

Android Handler机制简单分析

本文一切从简,将围绕一下流程展开叙述:

     A[what]-->B[why]
     B-->C[how]
     C-->D[analyze]

what?

接触Android的朋友都知道Handler机制用于多线程方面的通信,这好像是一句废话。

why?

我们知道java几个具有代表性的多线程通信方法,例如以下:

1.”wait”和”notify”通知机制

Java中每个类都是Oject的子类(万物皆对象,滑稽~~),也就继承Oject的”wait()”和”notify()”方法特性。简单举例说明:两个线程中,对于某Oject对象a,在线程1中执行wait(),线程1则一直处于阻塞中,直到在线程2中执行notify(),线程1才被唤醒继续执行。

2.”synchronized”线程锁机制

多个线程共享一个变量,通过上锁( synchronized关键字 )限制线程们对该变量的访问,谁拿到锁,谁便可以对变量进行修改,待其他线程拿到锁访问该变量时,根据变量的变化作出相应的处理,以达到通信的目的。

3.此处省略n个字…

嗯,上述方法都是利用线程阻塞的方式进行通信。这若在Android中使用?你得先搞清楚3个问题:

1.Android中多线程通信是为UI线程(主线程)+其他线程(子线程)的交互服务的。
2.基于问题1,Android的UI线程不允许阻塞,否则会造成”ANR”
3.基于问题2,为避免”ANR”,Android中所有的耗时操作(如网络请求,文件读写)须在子线程中完成,并通知进度或结果给主线程用于更新UI。