Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android_handler簡單使用,測試

android_handler簡單使用,測試

編輯:關於Android編程

package yjm.com.testcontrol;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class TestActivity extends Activity implements View.OnClickListener{
    TextView tv1;
    TextView tv2;
    Button btn1;
    Button btn2;

    //創建 UI線程更新數據,主要是UI 控件 不支持異步線程更新,必須所有的值都在UI線程值才能修改
     Handler myHandler = new Handler(){
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what){
                 case R.id.tv1:
                     tv1.setText(""+msg.arg1+"");
                     break;
                 case R.id.tv2:
                     tv2.setText(""+msg.arg2+"");
             }

             super.handleMessage(msg);
         }
     };

     class TheadTest extends Thread{
         Handler myHandler;
         Message msg;
         public TheadTest(Handler handler){
              this.myHandler=handler;
         }

        @Override
        public void run(){

            for (int i = 0; i <100 ; i++) {
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //此message 對象必須是新new的。如果重復發送同一個,就會卡住報錯。
                msg= new Message();
                msg.what=R.id.tv1;
                msg.arg1=i;
                myHandler.sendMessage(msg);
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_test);/**/

        tv1=(TextView)findViewById(R.id.tv1);
        tv2=(TextView)findViewById(R.id.tv2);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view.getId()==R.id.btn1){
            tv1.setText("btn1_test..開始.");
            new TheadTest(myHandler).start();
        }
        //UI線程內部進行UI數據量更新測試 按鈕2進行測試
        if(view.getId()==R.id.btn2){
            for (int i = 0; i <10000 ; i++) {
                tv2.setText("btn2_test...:"+i);
            }
        }

    }
}

  tv1 在主線程 1-99顯示 tv1 異步更新值,通過handler顯示值
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved