Android Tips-- Activity.runOnUiThread

     在开发过程中,发现Handler无处不在,更多的是直接new出一个Handler仅仅是为了在UI线程执行一句代码。

Handler mHandler = new Handler();
.....
   mHandler.post(new Runnable() {
			   public void run() {
				   textView.setText(R.string.success);
			   }
		});

是,Handler很强大,但有那么一些地方根本不必自己去使用Handler,或许有更好的方法呢?如仅仅是子线程更新界面,google的工程师们已经替我们想好了,其实Activity中提供了这么一个方法:

public final void runOnUiThread (Runnable action)
Added in  API level 1

Runs the specified action on the UI thread. If the current thread is the UI thread, then the action is executed immediately. If the current thread is not the UI thread, the action is posted to the event queue of the UI thread.

Parameters
action the action to run on the UI thread

其中的action将会被保证在UI线程去执行.


其实看源码的话,你会发现,这个方法的实现跟你想做的没什么,但是它替你做了,我们又何必重复呢

/** 
* Runs the specified action on the UI thread. If the current thread is the UI 
* thread, then the action is executed immediately. If the current thread is 
* not the UI thread, the action is posted to the event queue of the UI thread. 
* 
* @param action the action to run on the UI thread 
*/ 
public final void runOnUiThread(Runnable action) { 
    if (Thread.currentThread() != mUiThread) { 
        mHandler.post(action); 
    } else { 
        action.run(); 
    } 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值