android编程中thread, run, handler,之间关系。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android编程中thread, run, handler,之间关系。相关的知识,希望对你有一定的参考价值。
new Thread(this).start();
@Override
public void run()
// TODO Auto-generated method stub
Looper.prepare();
//RefreshHandler handler=new RefreshHandler();
while (!Thread.currentThread().isInterrupted())
//通过发送消息更新页面
Message m=new Message();
m.what=0x101;
handler.sendMessage(m);
try
Thread.sleep(100);
catch (InterruptedException e)
// TODO: handle exception
e.printStackTrace();
Looper.loop();
class RefreshHandler extends Handler
@Override
public void handleMessage(Message msg)
// TODO Auto-generated method stub
if (msg.what==0x101)
v.update();
v.invalidate();
super.handleMessage(msg);
当Thread.start()启动后,程序的执行顺序是怎么样的?
start之后run被启动?之后handler又是什么时候被调用的?还有程序如何循环工作?
由于没学过Java,对此知识点有点疑问。
顺序是:
new Thread(this).start();
run()
handler.sendMessage(m);
handleMessage(Message msg)追问
之后怎样完成再调用以及循环的?
invalidate更新的是run么?类外也能更新么?
invalidate更新的是run么?类外也能更新么?
追答不是在run方法里面,是在
class RefreshHandler extends Handler
@Override
public void handleMessage(Message msg)
// TODO Auto-generated method stub
if (msg.what==0x101)
v.update();
v.invalidate();
super.handleMessage(msg);
sendmessage之后handler当时就被启动?还是等run完再被启动?run方法可在程序任何地方用invalidate更新么?
追答sendmessage之后handler就被启动了,run方法中有循环,完没完都没事事,只要sendmessage了。在这种情况下,invalidate只能在handleMessage处理,因为子线程无法直接操作ui.
本回答被提问者采纳 参考技术B 你说呢...以上是关于android编程中thread, run, handler,之间关系。的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Android - Task.Run vs Task.Factory.StartNew和Thread.CurrentPrincipal
eclipse中做android游戏如何创建Thread(线程)