Activity.runOnUiThread介绍-Android

Posted hequnwang10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity.runOnUiThread介绍-Android相关的知识,希望对你有一定的参考价值。

android中我们不在子线程中操作UI,但是如果非要在子线程中操作完后实现对UI操作,这里的实现方法如下:

mButton.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        new Thread(new Runnable()   
            @Override
            public void run()  // 子线程
                Message message = new Message();
                Bundle bundle = new Bundle();
                bundle.putString("ChangeUI", "Handler改变了ui");
                message.setData(bundle);
                handler.sendMessage(message);
            
        ).start();
    
);
private Handler handler = new Handler() 
    @Override
    public void handleMessage(Message msg) 
        super.handleMessage(msg);
        Bundle bundle = msg.getData();
        String str = bundle.getString("ChangeUI");
        mUiTextview.setText(str);

    
;

runOnUiThread 就是为了更便捷的执行子线程时对ui进行操作

mButton2.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        new Thread(new Runnable() 
            @Override
            public void run()  // 子线程
                runOnUiThread(new Runnable() 
                    @Override
                    public void run() 
                        mUiTextview.setText("runOnUiThread改变了ui");
                    
                ); 
            
        ).start();

    
);

源码:


	final Handler mHandler = new Handler();
	private Thread mUiThread;
	
    public final void runOnUiThread(Runnable action) 
        if (Thread.currentThread() != mUiThread) 
            mHandler.post(action);
         else 
            action.run();
        
    

如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。

以上是关于Activity.runOnUiThread介绍-Android的主要内容,如果未能解决你的问题,请参考以下文章

理解Activity.runOnUiThread()

Activity.runOnUiThread(Runnable action)仅更新视图一次

Android 更新UI的两种方法——handler和runOnUiThread()

android开发--多线程

更新UI的四种方式

4.3 异步任务