您的位置:首页 > 移动开发 > Android开发

android os;异步消息处理机制:AsyncTask和Handler

2015-03-23 23:07 197 查看
android os:

为设备提供基础的操作系统服务,消息传递,和内部进程通信。

Classes:

AsyncTask<Params,Progress,Result>:异步任务,UI线程。
BatteryManager:ACTION_BATTERY_CHANGED Intent。

Binder:远程对象的基类,一种轻量级远程程序调用机制的核心部分,由IBinder定义。
Build:current build的信息,从系统特性中提取。
Build.VERSION:
Build.VERSION_CODES:

Bundle:字符串值和不同打包类型的映射。
CancellationSignal:提供取消进程中操作的能力。
ConditionVariable:实现条件变量的锁定实例。
CountDownTimer:倒计时,沿途定期通知。
Debug:提供各种Android应用程序的调试方法,包括各种和分配数。
Debug.InstructionCount:搜集和查询指令数的API。
Debug.MemoryInfo:用于检索各种统计有关该进程的内存映射。
DropBoxManager:队列数据块。

DropBoxManager.Entry:单一接口用于从drop box恢复。
Environment:提供访问环境变量。
FileObserver:监视文件在文件被设备上任何进程访问或改变后开始一事件。
Handler:允许你发送和处理消息,追寻与进程队列关联的对象。
HandlerThread:开始一个拥有Looper的新线程。
Looper:用于运行一个线程的消息循环。
MemoryFile:为Linux驱动程序包装
Message:定义包含任意数据和描述对象的消息,可以被发送到Handler。
MessageQueue:低等级的类消息队列,被Looper派遣。
Messager:引用Handler,其他程序可以使用Handler发送消息给它。
Parcel:消息容器,可通过IBinder发送。
ParcelFileDescripter:readFileDescriptor()返回,允许你在处理它后关闭它。
ParcelFileDescriptor.AutoCloseInputStream:
ParcelFileDescriptor.AutoCloseOutputStream:
PatternMatcher:一种简单的匹配模式,使使用不受信任的数据安全,不提供完整的注册接口支持,只是不能被恶意使用的简单通配符
PowerManager:管理设备供电状态。
PowerManager.WakeLock:唤醒锁机制预测你的应用是否需要设备唤醒。
Process:管理操作系统的进程的工具。
RecoverySystem:恢复系统包含android恢复系统的相互方法。
RemoteCallbackList<E extends IInterface>:负责维护一个远程接口列表的繁重工作,常用于执行从服务器到客户端的回调。
ResultReceiver:普通接口用于从某处接收返回结果。创造子类并实例化,通过IPC发送给其他人,接收别人send的结果。
StatFs:回复文件系统空间的所有信息。
StrictMode:开发者工具用于侦测偶然发生事件,并使你能专注处理它。
SystemClock:核心计数设备。
TokenWatcher:辅助类,帮你使用IBinder对象,作为引用计数的标志。
Trace:写入跟踪事件到系统跟踪缓冲区。
UserHandle:在设备上代表一个用户。
UserManager:在一个多用户系统管理用户和用户的详细资料。
Vibrator:操作震动。
WorkSource:

异步消息处理机制:

AsyncTask:允许后台操作和发布UI线程结果。轻量级,简单,过程可控。

三个泛型类型AsyncTask<Params,Progress,Result>

Params:启动任务时的输入参数
Progress:后台运算期间发布,后台任务执行的百分比
Result:后台运算的最终结果

四步:onPreExecute,doBackground,onProgressUpdate,onPostExecute

onPreExecute():在任务执行之前调用。用于设置任务,执行后台任务前对UI标记。
doInBackground():执行onPreExecute()后立即调用后台,这一步用于进行后台运算,可进行需要很长时间的操作。异步任务的参数传递到这一步。运算结果必须在这一步返回,将会传递回来在下一步。也可使用publishProgress()更新调用onProgressUpdate()更新UI。
onProgressUpdate():将信息更新到UI组件上,在UI线程中执行。
onPostExecute():后台运算结束后调用此方法。后台运算的结果作为参数传递给这一步。

rules:

必须在UI线程中加载
必须在UI线程中创建任务实例
execute()必须在UI线程调用
任务只能执行一次
不要手动调用四步

Handler:允许你发送和处理消息,追寻与进程队列关联的对象。

应用程序启动时,android首先开启一个主线程,主线程管理界面中的UI控件,进行事件分发,更新UI只能在主线程中更新。Handler运行在主线程中,与子线程可以通过Message对象传递数据,Handler接受子线程传递的Message对象,将Message放入主线程队列中,配合主线程更新UI。

Looper管理消息队列,调用Looper()方法,进入无限循环,当消息队列存在一条消息时,取出处理,每个线程有一个Looper和一个MessageQueue。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐