Android异步----重新认识Android(6)
2017-04-14 15:29
295 查看
Android线程使用规定:
1、子线程不能操作UI组件(UI组件的方法都是不同步的)(注意:如果子线程在UI线程初始化的时候就执行完成,那么就不会引发异常)
2、Android4.0之后规定不能再UI线程中进行网络数据交互并且耗时操作应该在子线程中完成
AsyncTask异步任务类:
1、抽象泛型类--
在使用的时候必须指明具体的类型AsyncTask<Params,Progress,Result>
泛型说明:
Params :第一个泛型,一般是请求的URL或String
Progress: 第二个,更新进度,常用类型是Integer
Result :第三个,下载线程执行完后返回的结果,常用Bitmap,byte[],String
使用步骤:
1、自定义异步任务类并指明泛型
2、重写方法
Result doInBackground(Params... params) 后台执行的任务
onPostExecute(Result result) 任务完成,UI主线程执行
3、有选择的重写以下方法
onPreExecute() 后台任务开始之前的准备工作,UI主线程执行
onProgressUpdate(Progress... values) 当前执行的进度,UI主线程执行
onCancelled(Result result) 取消任务时,任务已完成的情
4000
况
onCancelled() 取消任务,任务正在执行的情况
4、在UI线程中创建自定义异步任务类对象,并execute执行
异步任务方法说明:
1.onPreExecute() 运行在UI线程中在AsyncTask执行前执行的准备方法
2.doInBackground() 运行在工作线程中进行耗时操作的方法
参数的类型与AsyncTask泛型的第一个参数类型一致 可变参数
返回值与AsyncTask泛型的第三个参数类型一致 返回工作线程耗时操作的结果
publishProgress(progress);//通知主线程修改当前进度
3.onProgressUpdate() 运行在主线程中用来更新进度的方法
只要doInBackground()中调用了publishProgress(progress);就立即执行该方法
该方法的参数与AsyncTask中泛型的第二个参数类型一致 可变参数
4.onPostExecute() 运行在主线程中用来将耗时操作的结果显示到ui界面中
参数是与AsyncTask的泛型的第三个参数类型一致
1、获取JSON格式的字符串显示在TextView中
2、将对应的字符串解析,将解析结果通过适配器设置给Spinner
3、当前页面增加一个按钮用于跳转到另外页面(跳转的时候要求取消异步任务)
4、另外页面异步任务加载图片
1、使用异步任务加载图片
2、使用异步任务加载并解析JSON
3、使用异步任务加载并解析XML数据
1、子线程不能操作UI组件(UI组件的方法都是不同步的)(注意:如果子线程在UI线程初始化的时候就执行完成,那么就不会引发异常)
2、Android4.0之后规定不能再UI线程中进行网络数据交互并且耗时操作应该在子线程中完成
AsyncTask异步任务类:
1、抽象泛型类--
在使用的时候必须指明具体的类型AsyncTask<Params,Progress,Result>
泛型说明:
Params :第一个泛型,一般是请求的URL或String
Progress: 第二个,更新进度,常用类型是Integer
Result :第三个,下载线程执行完后返回的结果,常用Bitmap,byte[],String
使用步骤:
1、自定义异步任务类并指明泛型
2、重写方法
Result doInBackground(Params... params) 后台执行的任务
onPostExecute(Result result) 任务完成,UI主线程执行
3、有选择的重写以下方法
onPreExecute() 后台任务开始之前的准备工作,UI主线程执行
onProgressUpdate(Progress... values) 当前执行的进度,UI主线程执行
onCancelled(Result result) 取消任务时,任务已完成的情
4000
况
onCancelled() 取消任务,任务正在执行的情况
4、在UI线程中创建自定义异步任务类对象,并execute执行
异步任务方法说明:
1.onPreExecute() 运行在UI线程中在AsyncTask执行前执行的准备方法
2.doInBackground() 运行在工作线程中进行耗时操作的方法
参数的类型与AsyncTask泛型的第一个参数类型一致 可变参数
返回值与AsyncTask泛型的第三个参数类型一致 返回工作线程耗时操作的结果
publishProgress(progress);//通知主线程修改当前进度
3.onProgressUpdate() 运行在主线程中用来更新进度的方法
只要doInBackground()中调用了publishProgress(progress);就立即执行该方法
该方法的参数与AsyncTask中泛型的第二个参数类型一致 可变参数
4.onPostExecute() 运行在主线程中用来将耗时操作的结果显示到ui界面中
参数是与AsyncTask的泛型的第三个参数类型一致
1、获取JSON格式的字符串显示在TextView中
2、将对应的字符串解析,将解析结果通过适配器设置给Spinner
3、当前页面增加一个按钮用于跳转到另外页面(跳转的时候要求取消异步任务)
4、另外页面异步任务加载图片
1、使用异步任务加载图片
2、使用异步任务加载并解析JSON
3、使用异步任务加载并解析XML数据
相关文章推荐
- 重新认识javascript的settimeout和异步
- 重新认识Android
- Android ContentResolver 内容解析者(解析器)----重新认识Android(11)
- 重新认识javascript的settimeout和异步
- [Android]如何做一个崩溃率少于千分之三噶应用app(19)-重新认识AndroidManifest
- 重新认识javascript的settimeout和异步
- Android的存储----重新认识Android(9)
- Android的Menu_Dialog----重新认识Android(8)
- 重新认识Android Activity的生命周期
- 重新认识Android Glide
- Android---重新认识view--Visiable\Invisiable\Gone属性
- Android的SQLite----重新认识Android(10)
- Android四大组件之Activity----重新认识Android(4)
- 重新认识Android Activity的生命周期 推荐
- AndroidStudio使用进阶三: 重新认识AndroidStudio&Gradle
- Android组件---重新认识Android(2)
- Android 广播BroadcastReceiver基础----重新认识Android(13)
- AndroidListView、GridView----重新认识Android(7)
- Android 补间、属性动画----重新认识Android(12)
- android 在listview上面的Textview实现html解析并且图片异步宽高布局重新适配