学习Android第8天,Asynctask的使用(异步操作)
2016-04-15 21:25
549 查看
AsyncTask的使用背景
Android的UI操作不是线程安全的:
1、主线程中不能执行耗时操作,否则BANG!ANR
2、Android不允许我们在子线程中操作主线程中的UI控件,否则BANG!崩
3、UI操作只能在UI线程执行,(UI线程就是主线程)
4、耗时操作要放在子线程中去执行,执行完之后将结果返回给主线程去刷新UI控件
任何在其他线程访问主线程:
1、Handler线程通信机制
2、Activity。runOnUiThread(Runnable)
3、View.post(Runnable)或者View.postDelay(Runnable,long)
4、AsyncTask(异步任务)
为什么使用AsyncTask
1、我们不需要自己创建子线程,AsyncTask内部已经封装好了一个线程池去执行耗时操作
2、不需要自己写相应的方法去更新UI界面 例如:根据下载的进度更新UI界面中ProgressBar的进度
3、AsyncTask已经包含了所有子线程和UI线程需要处理的操作
AsyncTask异步任务
1、包含一系列的回调方法来完成在子线程中去完成的耗时操作,并将结果返回给主线程去刷新UI
2、程序员只需要继承AsyncTask,提供三个泛型参数,并实现这几个回调方法
3、调用execute(Params)方法来执行这个异步任务
任何使用AsyncTask
1、创建一个类,继承自AsyncTask
2、指定三个泛型
第一个泛型 String 指定调用execute(String)方法时的入参,
DoInBackground
第二个泛型 Integer
doInBackground方法中提示更新进度是使用的数据类型
第三个泛型 byte[]
doInBanckground的返回类型,onPostExecute 的入参数据类型
3、复写一个或多个AsyncTask的方法
onPreExecute 当AsyncTask.execute()方法时,立即被调用
doInBanckground 在子线程中执行,入参就是AsyncTask.execute(“aaa”)
的参数
onPostExecute(byte[] result) 在主线程中执行,入参是doInBanckground
的返回值
4、publishProgress()入参就是第二个参数
此方法实在doInBanckground方法中调用,每调用一次此方法,
onProgressUpdate就会被调用
5、onProgressUpdate方法的参数就是publishProgress所传的参数
Android的UI操作不是线程安全的:
1、主线程中不能执行耗时操作,否则BANG!ANR
2、Android不允许我们在子线程中操作主线程中的UI控件,否则BANG!崩
3、UI操作只能在UI线程执行,(UI线程就是主线程)
4、耗时操作要放在子线程中去执行,执行完之后将结果返回给主线程去刷新UI控件
任何在其他线程访问主线程:
1、Handler线程通信机制
2、Activity。runOnUiThread(Runnable)
3、View.post(Runnable)或者View.postDelay(Runnable,long)
4、AsyncTask(异步任务)
为什么使用AsyncTask
1、我们不需要自己创建子线程,AsyncTask内部已经封装好了一个线程池去执行耗时操作
2、不需要自己写相应的方法去更新UI界面 例如:根据下载的进度更新UI界面中ProgressBar的进度
3、AsyncTask已经包含了所有子线程和UI线程需要处理的操作
AsyncTask异步任务
1、包含一系列的回调方法来完成在子线程中去完成的耗时操作,并将结果返回给主线程去刷新UI
2、程序员只需要继承AsyncTask,提供三个泛型参数,并实现这几个回调方法
3、调用execute(Params)方法来执行这个异步任务
任何使用AsyncTask
1、创建一个类,继承自AsyncTask
2、指定三个泛型
第一个泛型 String 指定调用execute(String)方法时的入参,
DoInBackground
第二个泛型 Integer
doInBackground方法中提示更新进度是使用的数据类型
第三个泛型 byte[]
doInBanckground的返回类型,onPostExecute 的入参数据类型
3、复写一个或多个AsyncTask的方法
onPreExecute 当AsyncTask.execute()方法时,立即被调用
doInBanckground 在子线程中执行,入参就是AsyncTask.execute(“aaa”)
的参数
onPostExecute(byte[] result) 在主线程中执行,入参是doInBanckground
的返回值
4、publishProgress()入参就是第二个参数
此方法实在doInBanckground方法中调用,每调用一次此方法,
onProgressUpdate就会被调用
5、onProgressUpdate方法的参数就是publishProgress所传的参数
相关文章推荐
- Android:PopupWindow简单弹窗改进版
- android应用程序Manifest文件简介
- Android:PopupWindow简单弹窗
- [android]ShareSDK——内容分享和短信验证
- Android:密码显示隐藏
- Android(三)----数据存储和界面展现02
- Android:利用SharedPreferences实现自动登录
- Android:控件AutoCompleteTextView 客户端保存搜索历史自动提示
- Android学习笔记---(自己实现SimpleAdapter)BaseAdapter
- Android:控件AutoCompleteTextView 自动提示
- 怎样让你的APK跑在 com.android.phone 进程
- Android学习笔记(二)重识SharedPrefrences
- animation (2)
- Android传感器使用大全
- Android项目资源清理_Android lint工具
- android TextView属性的详细介绍 分享
- 横向滑动类listview 带回弹效果
- slidingmenu添加到androidStudio
- android中二维码和条形码的实现
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)