Handler和Thread-----处理耗时比较长的操作
2012-07-04 16:33
246 查看
Handler和Thread-----处理耗时比较长的操作
参考网站:/article/5974370.html
http://tansitongba.iteye.com/blog/1583263
在《解密Google Android》一书中,发现了这样一个启动线程的模型。利用该模型,我们可以把一些耗时的操作放到doStuff方法中去执行,同时在updateUIHere方法中进行更新UI界面的操作,就可以完成一个线程所需要的功能。其他的说明写在注释部分了。
参考这个方法,我把耗时操作,放在新开的线程中,使用Handler得到线程中耗时操作所获得的数据,从而来对UI界面进行操作:
一:线程部分
二:handler部分
第一步:定义Handler
public Handler onProRenAndGroHandler = null;
第二步,给Handler赋对象
onProRenAndGroHandler = new OnProRenAndGroHandler();
第三步:开线程,处理耗时操作
第四步:定义Handler类,得到数据,对UI进行操作
参考网站:/article/5974370.html
http://tansitongba.iteye.com/blog/1583263
在《解密Google Android》一书中,发现了这样一个启动线程的模型。利用该模型,我们可以把一些耗时的操作放到doStuff方法中去执行,同时在updateUIHere方法中进行更新UI界面的操作,就可以完成一个线程所需要的功能。其他的说明写在注释部分了。
Handler myHandler = new Handler() { public void handleMessage(Message msg) { updateUIHere(); } } new Thread() { public void run() { doStuff(); // 执行耗时操作 Message msg = myHandler.obtainMessage(); Bundle b = new Bundle(); b.putString("key", "value"); m.setData(b); // 向消息中添加数据 myHandler.sendMessage(m); // 向Handler发送消息,更新UI } }.start();
参考这个方法,我把耗时操作,放在新开的线程中,使用Handler得到线程中耗时操作所获得的数据,从而来对UI界面进行操作:
一:线程部分
Runnable myRunnable = new Runnable() { public void run() { /*********先睡一小段时间**********/ try { Thread.sleep(1500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO Auto-generated method stub //读取最近联系人的数据 List<ContentValues> llistRenCont = ConnectRenContListDataHelper.getRenContList( SmsDataHelper.getSmsDataList(MultiChoiceContactActivity.this), CallLogDataHelper.getCallLogList(MultiChoiceContactActivity.this)); //读取群组的数据 /***********群组名数据**************/ List<ContentValues> llistGroupName = GroupDataHelper.getGroupDataList(MultiChoiceContactActivity.this); /***********群组下各成员的数据**************/ List<ArrayList<ContentValues>> llistEachGroupItemData = GroupDataHelper.getGroupItemDataList(MultiChoiceContactActivity.this); Message msg = onProRenAndGroHandler.obtainMessage(); msg.obj = llistEachGroupItemData; Bundle bundle = new Bundle(); bundle.putParcelableArrayList(LISTGROUPNAME, (ArrayList<? extends Parcelable>) llistGroupName); bundle.putParcelableArrayList(LISTRENCONT, (ArrayList<? extends Parcelable>) llistRenCont); msg.setData(bundle); msg.sendToTarget(); } }; new Thread(myRunnable).start();
二:handler部分
private class OnProRenAndGroHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); listEachGroupItemData = (List<ArrayList<ContentValues>>) msg.obj; Bundle bundle = msg.getData(); listGroupName = bundle.getParcelableArrayList(LISTGROUPNAME); listRenCont = bundle.getParcelableArrayList(LISTRENCONT); UpdateUIHere(); } }
第一步:定义Handler
public Handler onProRenAndGroHandler = null;
第二步,给Handler赋对象
onProRenAndGroHandler = new OnProRenAndGroHandler();
第三步:开线程,处理耗时操作
第四步:定义Handler类,得到数据,对UI进行操作
相关文章推荐
- ProcessDialog结合Thread处理耗时操作(Handler和Thread)
- ThreadPoolTaskExecutor异步的处理报警发送邮件短信比较耗时的东东
- android 的Handler处理UI主线程外的耗时操作
- ProgressDialog和Thread结合处理耗时操作
- AsyncTask 与Thread加Handler处理消息比较
- ProcessDialog结合Thread处理耗时操作
- 在 .NET Web 开发中,使用 ThreadPool.QueueUserWorkItem 异步地处理耗时操作
- 更新UI操作,Handler与runOnUiThread
- Android消息处理机制:Handler Thread Message Looper
- 如何处理UI与耗时操作的通信
- 在Android中使用Handler和Thread线程执行后台操作
- 深入理解Android消息处理系统——Looper、Handler、Thread
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- 深入理解Android消息处理系统——Looper、Handler、Thread
- Android学习札记28:深入理解Android中的消息处理机制——Thread、Looper、MessageQueue和Handler(2)
- 深入理解Android的消息处理系统---Handler、Looper、Thread学习记录
- django 耗时操作处理办法 celery
- 在Android中使用Handler和Thread线程执行后台操作
- 用户频繁操作耗时开关的处理办法
- Qt中针对比较耗时的工作防止界面假死的处理方式