「Handle」Handle的详细用法

  • 内容
  • 相关

2.jpg

handlemessage

      handler:是一个信息派发目标,开展推送和解决信息,而且其Runnable目标与一个进程的messagequeue关系。
功效:生产调度信息,将一个每日任务转换到某一特定的进程中来实行。
为何必须Handler?
子进程不容许浏览UI
倘若子进程容许浏览UI,则在c#多线程高并发浏览状况下,会促使UI控件处在不能预估的情况。
传统式解决方案:上锁,但会促使UI浏览逻辑性变的繁杂,次之减少UI浏览的高效率。
导入Handler
选用单线程实体模型解决UI实际操作,根据Handler转换到UI进程,处理子进程中无法打开UI的难题。

      Handler应用
方法一:post(Runnable)
建立一个工作中进程,保持Runnable插口,保持run方式 ,解决用时实际操作。
建立一个handler,根据handler.post/postDelay,投寄建立的Runnable,在run方式 中开展升级UI实际操作。
newThread(newRunnable(){
@Override
publicvoidrun(){
/**
用时实际操作
*/
handler.post(newRunnable(){
@Override
publicvoidrun(){
/**
升级UI
*/
}
});
}
}).start();
 

    方法二:sendMessage(Message)
建立一个工作中进程,承继Thread,再次run方式 ,解决用时实际操作
建立一个Message目标,设定what标示及数据信息
根据sendMessage开展投寄信息
建立一个handler,重新写过handleMessage方式 ,依据msg.what信息内容分辨,接受相匹配的信息内容,再这里升级UI。

privateHandlerhandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
switch(msg.what){//分辨标志位
case1:
/**
读取数据,升级UI
*/
break;
}
}
};
publicclassWorkThreadextendsThread{
@Override
publicvoidrun(){
super.run();
/**

用时实际操作
*/
//从全局性池里回到一个message案例,防止数次建立message(如newMessage)
Messagemsg=Message.obtain();
msg.obj=data;
msg.what=1;//标示信息的标示
handler.sendMessage(msg);
}
}
newWorkThread().start();

本文标签:

版权声明:若无特殊注明,本文皆为《Black Leaguer》原创,转载请保留文章出处。『鹦鹉搜索』

百度收录:百度未收录『点击提交』

本文链接:「Handle」Handle的详细用法 - https://www.15qq.cn/spe_seo/1077.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

允许邮件通知