android之handler和asynctask
16lz
2021-01-25
Handler消息机制(开线程时注意他什么时候停止,定义一个flag,activity销毁时改变,然后再线程里判断)
第一种方式:sendMessage()来执行更新ui
Private Handler Handler = new Handler(){//处理消息(被主线程执行)Public void handlerMessage(Message msg){String str = (String)msg.obj;EditText.setText(str); //不直接放到子线程中原因:View(界面)只能由主线程更新}}//在子线程中String str -= “我是网络数据”;//创建Message对象Messag msg = new Messa();Msg.obj = str;//发送一个消息Handler.sendMessage(msg);
第二种方式:handler.post(Runnable r)调用run方式可以执行更新ui的代码
AsyncTask(内部类)
Class MyAsyncTaskextends AsyncTask{ //被主线程执行,在doInBackground函数前执行 @OverrideProtected void onPreExecute(){ //弹加载对话框 } //被子线程执行,用来处理耗时行为 @Override Protected String doInBackground(Integer…params){ Return null; } //被主线程执行,在doInBackground函数后执行 @Override Protected void onPostExecute(String result){ //更新UI数据 }}
AsycTask比handler更快,因为有线程池。
若GET url传参中有中文
URLEncoder.encode(“上海”,”UTF-8”);//中文编码Ex:URL url = new URL(path+"?keywords="+URLEncoder.encode(“中文”,"utf-8"));
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android应用程序线程消息循环模型分析(5)
- Android(安卓)面试复习资料
- Android知识点总结(二十)Android中的ANR
- EventBus3.0源码解析(二):post()与postSticky()
- Android(安卓)Netroid解析之——断点续传下载及问题修正
- android 原生 电子邮件 应用 发送邮件附带 中文名附件时 附件名
- 应用Style和Theme - Android官方文档中文翻译
- android api 中文 (74)―― AdapterView.AdapterContextMenuInfo