首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Handler中post步骤的调用流程和使用场景

2012-09-09 
Handler中post方法的调用流程和使用场景引言:最近公司项目做了一些比较大的重构,很多地方都用了Handler.po

Handler中post方法的调用流程和使用场景

引言:

最近公司项目做了一些比较大的重构,很多地方都用了Handler.post(Runnable r),这个方法,比如这一段

    private final void handleCallback(Message message) {        message.callback.run();    }






---------------------小小分割线----------------------
意义:
到了这里,我们发现貌似这玩意也就是转了一圈又调用了线程的run而已么,那么这又有什么用呢。
如果我们给handler传入的是一个message,那么最后会调用我们的handler的handleMessage(Message)方法,然后我们再去判断最后再去处理
,但是我们用runnable可以直接传入如何操作的对象,不需要再接收到消息后再去判断message的what然后选择做什么操作,从代码清晰的角度,
我也觉得这样子会比在判断一遍要清晰,容易理解很多。




---------------------小小分割线----------------------
所解决的问题:
请看博文第一段代码,这里面的runnable执行了一个setContentView(View),这里的handler是在onActivityResult里面调用的,也就是注销后重新登录回到主页面的这种情况,这个view里面包含了一些fragment,然后activity里面绑定fragment是需要是活动状态的,如果不用handler,直接执行,在onActivityResult方法执行期间activity还是在onPause状态,所以在程序执行到添加fragment的时候报错了,而用了handler就能保证这段代码最后会在activity处于活动状态既UI线程里面执行了。

热点排行