android中更新ui的线程:thread、handler、looper、timertask等

android中更新ui的线程:thread、handler、looper、timertask等

ID:12552182

大小:22.45 KB

页数:4页

时间:2018-07-17

android中更新ui的线程:thread、handler、looper、timertask等_第1页
android中更新ui的线程:thread、handler、looper、timertask等_第2页
android中更新ui的线程:thread、handler、looper、timertask等_第3页
android中更新ui的线程:thread、handler、looper、timertask等_第4页
资源描述:

《android中更新ui的线程:thread、handler、looper、timertask等》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、方法一:(java习惯,在android不推荐使用)刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题newThread(newRunnable(){publicvoidrun(){myView.invalidate();}}).start();可以实现功能,刷新UI界面。但是这样是不行的,因为它违背了单线程模型:AndroidUI操作并不是线程安全的并且这些操作必须在UI线程中执行。 方法二:(Thread+Handler)查阅了文档和apidemo后,发觉常用的方法是利用Handler来实现UI线程的更新的。Handler来根

2、据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。HandlermyHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){caseTestHandler.GUIUPDATEIDENTIFIER:myBounceView.invalidate();break;}super.handleMessage(msg);}};classmyThreadimplementsRunnable{publicvoidrun(){while(!Thread.curr

3、entThread().isInterrupted()){Messagemessage=newMessage();message.what=TestHandler.GUIUPDATEIDENTIFIER;TestHandler.this.myHandler.sendMessage(message);try{Thread.sleep(100);}catch(InterruptedExceptione){Thread.currentThread().interrupt();}}}}以上方法demo看:http://rayleung.javaeye.com/blog/411

4、860方法三:(java习惯,不推荐)在Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类,TimerTask相对于Thread来说对于资源消耗的更低,除了使用Android自带的AlarmManager使用Timer定时器是一种更好的解决方法。我们需要引入importjava.util.Timer;和importjava.util.TimerTask;publicclassJavaTimerextendsActivity{Timertimer=newTimer();TimerTasktask=newTimerTask(){publ

5、icvoidrun(){setTitle("hearme?");}};publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);timer.schedule(task,10000);}}方法四:(TimerTask+Handler)实际上这样做是不行的,这跟Android的线程安全有关!应该通过配合Handler来实现timer功能的!publicclassTestTimerextendsActivity{T

6、imertimer=newTimer();Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:setTitle("hearme?");break;}super.handleMessage(msg);}}; TimerTasktask=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();message.what=1;handler.sendMessage(message);}}; pu

7、blicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main); timer.schedule(task,10000);}}方法五:(Runnable+Handler.postDelayed(runnable,time) )在Android里定时更新UI,通常使用的是 java.util.Timer, java.util.TimerTask,android.os.Handler组合。实际上Handle

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。