Android异步处理
来源:互联网 发布:淘宝复制进入app技术 编辑:程序博客网 时间:2024/06/05 00:10
在Android 中,不能在主UI线程里处理耗时操作,否则会造成阻塞,时间过长时(超过5秒),甚至造成系统提示是否要kill该进程。
(1)使用线程
注意不能在非主UI线程中更新界面,有时需结合Handler使用.
prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true);Thread th = new Thread(new Runnable(){ public void run() { //prgDialog = ProgressDialog.show();//对话框的显示不能放在此处 loadData();//time consuming operation //updateListView();//也不能在些更新主UI线程界面 prgDialog.dismiss(); }});th.start();
如果需要在耗时操作后,更新或通知主线程,可以通过如下方法:
(2) 使用Handler
prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true); new Thread() { public void run() { loadData();//time consumng operation handler.sendEmptyMessage(0);//也可以使用下面的postUpdateList(); } }.start(); //其实下面两个方法都是在主UI线程里完成的(所以最好不要有耗时操作) //即使把该函数放在一个子线程里面去调,也是一样 public void postUpdateList() { adpHandler.post(new Runnable() { public void run() { updateListView(); prgDialog.dismiss(); } }); } private Handler handler =new Handler() { @Override //当有消息发送出来的时候就执行Handler的这个方法,这里不能做耗时操作,否则还是会阻塞主UI线程 public void handleMessage(Message msg) { super.handleMessage(msg); updateListView(); prgDialog.dismiss(); } };
- Android AsyncTask异步处理
- Android异步处理
- Android异步消息处理
- Android异步处理
- Android AsyncTask异步处理
- Android AsyncTask异步处理
- android异步处理
- Android实现异步处理
- Android AsyncTask异步处理
- android 异步处理
- Android异步消息处理
- Android AsyncTask异步处理
- Android异步处理
- Android AsyncTask异步处理
- Android异步处理
- android 异步消息处理
- Android异步消息处理
- Android AsyncTask异步处理
- linux启动内存分配器
- Linux下用内存管理器的钩子函数跟踪内存泄漏 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/200
- SWT表格字体的设置(即TableViewer)其实设置的是Table
- VMLite 与 VirtualBox 实际上是一样的
- JDeveloper IDE 入门 (一)
- Android异步处理
- HDU3465 Life is a Line 用归并排序求逆序数
- 第三章 --- 第六节
- linux下使用emacs
- 十年MFC经历认识的Microsoft技术
- 2011年,比较忙啊
- UVa Problem 123 - Searching Quickly
- 计算机学科的发展方向
- 史上最能侃的总结(程序员)