Android异步----重新认识Android(6)

    xiaoxiao2021-04-18  57

    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) 取消任务时,任务已完成的情况 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数据
    转载请注明原文地址: https://ju.6miu.com/read-675097.html

    最新回复(0)