zoukankan      html  css  js  c++  java
  • Android在子线程中更新UI(一)

    MainActivity如下:

    package cc.testui1;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.app.Activity;
    /**
     * Demo描述:
     * 在子线程中更改UI的方式一
     * 
     * 在子线程中利用主线程的Handler的post()方法
     * 更改UI这个在子线程中sendMessage()原理和
     * 形式都很类似.
     * 
     * 参考资料:
     * http://blog.csdn.net/guolin_blog/article/details/9991569
     * Thank you very much
     */
    
    public class MainActivity extends Activity {
        private TextView mTextView;
        private Handler mHandler;
        private Button mButton;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		init();
    	}
        private void init(){
        	mHandler=new Handler();
        	mTextView=(TextView) findViewById(R.id.textView);
        	mButton=(Button) findViewById(R.id.button);
        	mButton.setOnClickListener(new OnClickListenerImpl());
        }
        
        private class OnClickListenerImpl implements OnClickListener{
    		@Override
    		public void onClick(View v) {
    			new Thread(){
    	    		public void run() {
    	    			mHandler.post(new Runnable() {
    						@Override
    						public void run() {
    							mTextView.setText("My number is 007");
    						}
    					});
    	    		};
    	    	}.start();
    			
    		}
        	
        }
    	
    }
    

    main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       >
    
         <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dip"
            />
         
         <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="120dip"
            />
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试在子线程中更新UI" 
            android:layout_centerInParent="true"
            />
    
    </RelativeLayout>


     

  • 相关阅读:
    Unity 3(一):简介与示例
    MongoDB以Windows Service运行
    动态SQL中变量赋值
    网站发布IIS后堆栈追踪无法获取出错的行号
    GridView Postback后出错Operation is not valid due to the current state of the object.
    Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
    SQL Server 问题之 排序规则(collation)冲突
    IIS 问题集锦
    linux下安装mysql(ubuntu0.16.04.1)
    apt-get update 系列作用
  • 原文地址:https://www.cnblogs.com/riskyer/p/3283619.html
Copyright © 2011-2022 走看看