文档详情

android多线程处理(补汉6个汉字字).pdf

发布:2018-12-29约5.8千字共22页下载文档
文本预览下载声明
Android 多线程 北京理工大学计算机学院 金旭亮 Android多线程技术基础 Android进程  默认情况下,同一应用的所有组件运行于同一进程中,然 后,允许同一应用中的不同组件运行于不同的进程,并且 可以为任何进程创建附加的线程。也允许不同应用中的组 件运行于同一个进程中(只要它们共享同一个Linux User ID和 Certificates )。  Android应用有四种组件 :Activity, Service, Receiver 和Content Provider, 在manifest中可以设置它们的 android:process 属性。application 元素的 android:process 属性则应用于所有的组件。 2013/11/1 金旭亮移动编程Android系列 3 五个级别进程优先级  Android依据一个importance hierarchy决定 应该Kill掉哪个进程。有五种importance hierarchy : 1. 前台进程 2. 可见进程 3. 服务进程 4. 后台进程 5. 空进程 2013/11/1 金旭亮移动编程Android系列 4 UI 单线程模型  UI操作并不是线程安全的并且这些操作必须在UI 线程中执行。否则,Android就会发出错误讯息 CalledFromWrongThreadException  Demo: VisitUIControl 2013/11/1 金旭亮移动编程Android系列 5 三种推送工作到UI线程的方法 1. Activity对象.runOnUiThread(Runnable) 2. View对象.post(Runnable) 3. View对象.postDelayed(Runnable, long)  请参看VisitUIControler示例代码 2013/11/1 金旭亮移动编程Android系列 6 定时调用  使用Timer对象可以实现定时调用,它关联着一个任务队 列。  需要定时调用的代码需要封装到TimerTask类的run方法 中,使用schedule()或scheduleAtFixedRate()方法将 TimerTask对象追加到Timer对象的任务队列中。  Timer对象使用独立的线程执行定时任务  可以使用Timer对象的purge方法清空任务队列,从而让 以前的未完成的工作任务不再执行。  如果需要取消定时调用操作(不再执行所有的任务),调 用Timer对象的cancel方法。 2013/11/1 金旭亮移动编程Android系列 7 定时调用实例  TimerDemo 2013/11/1 金旭亮移动编程Android系列 8 AsyncTask AsyncTask  由于跨线程更新UI控件是一个非常常见的编程场景,为了 简化编程,Android专门设计了一个AsyncTask类完成 这个工作。  AsyncTask代表一个异步任务,在使用时需要从此类派生 出一个子类,重写相关的方法,以便将需要异步执行的工 作封装到此类中。  之后,在UI thread中创建AsyncTask的实例(即new一 个你所设计的AsyncTask子类对象),调用 其 AsyncTask.execute方法(也必须在UI thread中调 用)并传给它一个或多个参数。  如果需要中途取消操作,调用AsyncTask对象的cancel 方法。 2013/11/1 金旭亮移动编程Android系列
显示全部
相似文档