异步线程之AsyncTask
来源:互联网 发布:罗元裳是骗局吗 知乎 编辑:程序博客网 时间:2024/05/16 18:34
1、使用新线程的原因:android的UI线程主要负责处理用户的按键事件、用户触屏事件及屏幕绘图事件,因此其它其它操作不应该、也不能阻止UI线程,否则UI界面将会变得停止响应。2、解决新线程不能更新UI组件的问题 2.1、使用Handler实现线程通信 2.2、Activity.runOnUiThread(Runnable) 2.3、View.post(Runnable) 2.4、View.postDelayed(Runnable) 2.5、AsyncTask3、AsyncTask的使用:AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承 3.1、参数介绍:Params,启动任务执行输入参数的类型,Progress后台任务完成的进度值的类型,Result后台完成后返回结果的类型 3.2、方法介绍: 3.2.1、AsyncTask.cancel(boolean)如果是true,如果线程执行,则会被打断,如果是false,线程将会被运行执行完成 3.2.2、onPreExecute()//一般用来做一些初始化操作 3.2.3、doInBackground(String... strings)//处理后台线程要完成的任务 3.2.4、onProgressUpdate(Integer ... values) //在doInBackgrounp()方法中调用 publishProgress(Progress... values)方法更新任务执行的进度,将会触发该方法 3.2.5、onPostExecute(Integer result)//doInBackGrounp()完成后自动调用此方法,用来处理结果 new AsyncTask<String,Void,Integer>(){//如果为泛型参数,就设为void protected void onPreExecute() {} //处理后台线程要完成的任务 protected Integer doInBackground(String... strings) { //strings[0]=account strings[1]=pwd return loginCode; } protected void onProgressUpdate(Integer ... values){} //doInBackGrounp()完成后自动调用此方法,用来处理结果 protected void onPostExecute(Integer result) {} }.execute(account,pwd,host); 3.3、超时处理 private Handler uiHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what){ case cancelMyTask: if(myTask!=null && !myTask.isCancelled() && myTask.getStatus() == AsyncTask.Status.RUNNING){ myTask.cancel(true); myTask = null; showLayout.setVisibility(View.GONE); MyToast.showToastLong(context, "连接超时"); } break; } } }; final MyTask myTask = new MyTask();//继承AsyncTask //只是打断AsyncTask,并没有结束掉myTask.cancel(true); myTask.execute(account,pwd,host); Thread thread = new Thread(){ public void run(){ try{ myTask.get(5000, TimeUnit.MILLISECONDS); }catch(InterruptedException e){ }catch(ExecutionException e){ }catch(TimeoutException e){ uiHandler.sendEmptyMessage(cancelMyTask);; } } };
0 0
- 异步线程之AsyncTask
- Android异步线程之AsyncTask
- android线程异步处理之AsyncTask
- Android线程异步处理之AsyncTask
- Android线程异步处理之AsyncTask
- Android 异步线程学习之 AsyncTask介绍
- Android线程管理之AsyncTask异步任务
- Android线程管理之AsyncTask异步任务
- Android 实践之异步线程AsyncTask
- AsyncTask activity异步线程
- Android AsyncTask异步线程
- Android AsyncTask异步线程
- 关于异步线程AsyncTask
- AsyncTask异步线程下载
- AsyncTask线程异步通信
- Android开发学习笔记十四 异步线程之AsyncTask
- Android之线程使用AsyncTask异步任务(一)
- Android之线程使用AsyncTask异步任务(二)
- 【LightOJ 1141
- Java学习笔记(二)--各种运算符 键盘录入数据 各种语句
- [机房练习赛4.4]intkth 区间第k小及修改
- redux-form的学习笔记二--实现表单的同步验证
- JavaScript String.fromCharCode() 函数详解
- 异步线程之AsyncTask
- innodb存储引擎笔记(上)
- 前端构建工具gulpjs的使用介绍及技巧
- STL中的nth_element()方法的使用
- 蓝桥杯-算法提高-队列操作
- csu1798: 小Z的城市 线段树+ST表
- android之ListView重写item里面的事件
- shell中的变量赋值
- android网络配置