您的位置:首页 > 移动开发 > Android开发

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数据























内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: