WEB开发网
开发学院手机开发Android 开发 Android 任务、进程和线程 阅读

Android 任务、进程和线程

 2010-07-01 14:54:00 来源:WEB开发网   
核心提示:Android的替罪羊,但是,Android 任务、进程和线程(7),Android的组件是有生命周期的, 如果真的发生这样情况,等待执行完毕后的回调,从而完成整个异步调用的流程,不要犹豫,去杀开发的程序员吧
Android的替罪羊。但是,Android的组件是有生命周期的, 如果真的发生这样情况,不要犹豫,去杀开发的程序员吧。

为了逃生,程序员们有一块免死金牌,那就是Android的state机制。所谓state,就是开发人员将一些当前运行的状态信息存放在一个 Bundle对象里面,这是一个可序列化键值对集合。如果该Activity组件所处的进程需要回收,Android核心会将其上Activity组件的 Bundle对象持久化到磁盘上,当用户回到该Activity时候,系统会重新构造该组件,并将持久化到磁盘上的Bundle对象恢复。有了这样的持久化的状态信息,开发人员可以很好的区分具体死法,并有机会的使得死而复生的Activity恢复到死前状态。开发者应该做的,是通过 onSaveInstanceState函数把需要维系的状态信息(在默认的状态下,系统控件都会自己保存相关的状态信息,比如TextView,会保存当前的Text信息,这都不需要开发人员担心...),写入到Bundle对象,然后在 onRestoreInstanceState函数中读取并恢复相关信息(onCreate,onStart,也都可以处理...)。

线程

读取数据,后台处理,这些猥琐的伙计,自然少不了线程的参与。在Android核心的调度层面,是不屑于考量线程的,它关注的只有进程,每一个组件的构造和处理,都是在进程的主线程上做的,这样可以保证逻辑的足够简单。多线程,往往都是开发人员需要做的。

Android的线程,也是通过派生Java的Thread对象,实现Run方法来实现的。但当用户需要跑一个具有消息循环的线程的时候,Android 有更好的支持,来自于Handler和Looper。Handler做的是消息的传送和分发,派生其 handleMessage函数,可以处理各种收到的消息,和win开发无异。Looper的任务,则是构造循环,等候退出或其他消息的来临。在 Looper的SDK页面,有一个消息循环线程实现的标准范例,当然,更为标准的方式也许是构造一个HandlerThread线程,将它的Looper 传递给Handler。

Android中,Content Provider的使用,往往和线程挂钩,谁让它和数据相关呢。在前面提到过,Content Provider为了保持更多的灵活性,本身只提供了同步调用的接口,而由于异步对Content Provider进行增删改查是一个常做操作,Android通过AsyncQueryHandler对象,提供了异步接口。这是一个Handler的子类,开发人员可以调用startXXX方法发起操作,通过派生onXXXComplete方法,等待执行完毕后的回调,从而完成整个异步调用的流程,十分的简约明了。

上一页  2 3 4 5 6 7 8  下一页

Tags:Android 任务 进程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接