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

来源:互联网 发布:世音琴行 淘宝 编辑:程序博客网 时间:2024/03/29 18:57
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
  1. onPreExecute():在任务执行之前调用。用于设置任务,执行后台任务前对UI标记。
  2. doInBackground():执行onPreExecute()后立即调用后台,这一步用于进行后台运算,可进行需要很长时间的操作。异步任务的参数传递到这一步。运算结果必须在这一步返回,将会传递回来在下一步。也可使用publishProgress()更新调用onProgressUpdate()更新UI。
  3. onProgressUpdate():将信息更新到UI组件上,在UI线程中执行。
  4. onPostExecute():后台运算结束后调用此方法。后台运算的结果作为参数传递给这一步。
rules:
  • 必须在UI线程中加载
  • 必须在UI线程中创建任务实例
  • execute()必须在UI线程调用
  • 任务只能执行一次
  • 不要手动调用四步
Handler:允许你发送和处理消息,追寻与进程队列关联的对象。
应用程序启动时,android首先开启一个主线程,主线程管理界面中的UI控件,进行事件分发,更新UI只能在主线程中更新。Handler运行在主线程中,与子线程可以通过Message对象传递数据,Handler接受子线程传递的Message对象,将Message放入主线程队列中,配合主线程更新UI。
Looper管理消息队列,调用Looper()方法,进入无限循环,当消息队列存在一条消息时,取出处理,每个线程有一个Looper和一个MessageQueue。
0 0
原创粉丝点击