Android线程
2015-07-31 15:29
274 查看
Android系统会为应用创建一个main进程,程序的所有组件都运行在这个进程里
Andoid的单线程模式必须遵守两个规则:
1.不要阻塞UI线程。
2.不要在UI线程之外访问Andoid的UI组件包。
为了能够在其他线程中方为UI线程,Android提供了几种方法:
Activity.runOnUiThread(Runnable)
View.post(Runnable)
(long)View.postDelayed(Runnable , long)
然而这几种方法都有其局限性,对于更复杂的逻辑可能就无能为力了。
所以需要引入Handler机制来处理UI线程分发过来的消息。
Android还提供了一个异步任务类AsyncTask,这个类在内部封装了Handler。事实上整个Android上Handler是无处不在的。
AsyncTask的工作方式概述:
可以用generics来指定参数、进度值和任务最终值的类型。
工作线程中的doInBackground()方法会自动执行。
onPreExecute()、onPostExecute()和onProgressUpdate()方法都在UI线程中调用。
doInBackground()的返回值会传给onPostExecute()。
在doInBackground()内的任何时刻,都可以调用publishProgress()来执行UI线程中的onProgressUpdate()。
可以在任何时刻、任何线程内取消任务。
Andoid的单线程模式必须遵守两个规则:
1.不要阻塞UI线程。
2.不要在UI线程之外访问Andoid的UI组件包。
为了能够在其他线程中方为UI线程,Android提供了几种方法:
Activity.runOnUiThread(Runnable)
View.post(Runnable)
(long)View.postDelayed(Runnable , long)
然而这几种方法都有其局限性,对于更复杂的逻辑可能就无能为力了。
所以需要引入Handler机制来处理UI线程分发过来的消息。
Android还提供了一个异步任务类AsyncTask,这个类在内部封装了Handler。事实上整个Android上Handler是无处不在的。
AsyncTask的工作方式概述:
可以用generics来指定参数、进度值和任务最终值的类型。
工作线程中的doInBackground()方法会自动执行。
onPreExecute()、onPostExecute()和onProgressUpdate()方法都在UI线程中调用。
doInBackground()的返回值会传给onPostExecute()。
在doInBackground()内的任何时刻,都可以调用publishProgress()来执行UI线程中的onProgressUpdate()。
可以在任何时刻、任何线程内取消任务。
相关文章推荐
- 学习android编程之路(5)— Toast使用方法
- Android自定义视图
- Android像素与dip的关系
- android studio升级失败提示 Connection failed解决方法
- Android开发加载音乐文件时
- Android自定义视图
- Android 5.0 android:elevation 如果给button设置效果
- Android AlertDiaog自定义EditText自动弹出软键盘
- 【TabLayout】 Android 另一种Tab的实现
- 自定义view(二)
- Android完全退出activity
- Android之消息推送聊天实现
- 使用Java代码在Android中实现图片裁剪功能
- 【Android本地开发:图像处理】Skia图像库
- Android Bundle传值
- Android 文件读写操作 总结
- android关于点九图的制作
- 八款Android 开发者必备的小工具
- AnimatorSet的使用
- Android 进程的五种生命周期学习