• runOnUiThread学习


    runOnUiThread参考:

    http://blog.163.com/menxu_work/blog/static/20777441920125311250187/

    Activity类的runOnUiThread方法你用过吗,如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread,runOnUiThread可以帮助你在线程中执行UI更新操作,我们只需要在线程中写上类似

    Activity.this. runOnUiThread(new Runnable() {
    
    @Override
    
    public void run() {
    
           // refresh ui 的操作代码
    
       }
    
    });
    

    这里需要注意的是runOnUiThread是Activity中的方法,在线程中我们需要告诉系统是哪个activity调用,所以前面显示的指明了activity。

    http://blog.163.com/ppy2790@126/blog/static/10324224120138210440928/

    更新UI采用Handle+Thread,需要发送消息,接受处理消息(在回调方法中处理),比较繁琐。除此之外,还可以使用runOnUiThread方法。
     
    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。 
     
    Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。
     
    public class TestActivity extends Activity {
    
    	Button btn;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.handler_msg);
    		btn = (Button) findViewById(R.id.button1);
    
    		btn.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View view) {
    				// TODO Auto-generated method stub
    
    				new Thread(new Runnable() {
    					@Override
    					public void run() {
    						// TODO Auto-generated method stub
    					        // 模拟耗时的操作。
    						try {
    							Thread.sleep(10000);
    						} catch (InterruptedException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    						// 更新主线程UI
    						TestActivity.this.runOnUiThread(new Runnable() {
    							@Override
    							public void run() {
    								// TODO Auto-generated method stub
    								btn.setText("更新完毕!");
    							}
    						});
    
    					}
    				}).start();
    
    			}
    		});
    
    	}
    
  • 相关阅读:
    高德地图的使用点标记、折线标记
    vue 过滤器filter(全面)
    vue cli4.0 快速搭建项目详解
    vue cli3.0快速搭建项目详解(强烈推荐)
    路由传参的三种方法
    router-link 返回上页 和 新窗口打开链接
    Django REST framework+Vue 打造生鲜超市(一)
    Android笔记:波纹按钮
    简单更换博客园背景
    SUID,SGID和SBIT
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/4085958.html
Copyright © 2020-2023  润新知