• android の Handler消息传递机制


    Handler类的主要作用有两个:

    ==》在新启动的线程中发送消息。

    ==》在主线程中获取、处理消息。

    View Code
    public class TestActivity extends Activity {
        
        private Button btnStart,btnEnd;
        private ProgressBar proBar;
        
        protected void init(){
            btnStart = (Button)findViewById(R.id.start);
            btnEnd = (Button)findViewById(R.id.end);
            proBar = (ProgressBar)findViewById(R.id.pBar);
        }
        
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            btnStart.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    proBar.setVisibility(View.VISIBLE);
                    //1.将一个线程加入线程队列;
                    updateBarHandler.post(updateBarThread);
                }
            });
    
            btnEnd.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    updateBarHandler.removeCallbacks(updateBarThread);
                }
            });
        }
        
         Handler updateBarHandler = new Handler(){
            public void handleMessage(Message msg) {
                //3.主线程中获取处理消息
                proBar.setProgress(msg.arg1);
                updateBarHandler.post(updateBarThread);
            }
            
        };
        
        Runnable updateBarThread = new Runnable() {
            int i = 0;
            public void run() {
                i = i + 10;
                Message msg = updateBarHandler.obtainMessage();
                msg.arg1 = i;
                try{
                    Thread.sleep(1000);
                }catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //2.新线程中发送一个消息到消息队列
                updateBarHandler.sendMessage(msg);
                if(i == 100){
                    updateBarHandler.removeCallbacks(updateBarThread);
                }
            }
        };
    }

    这里有两种队列,

    一种是线程队列,就是用postXX方法或者removeCallbacks方法对线程对象的操作。

    一种是消息队列,用sendMessage和handleMessage方法来对消息对象进行处理。

  • 相关阅读:
    机器学习系列(4) 线性回归
    MYSQL系列(5) 电商常用指标查询
    MYSQL系列(4) 关于时间函数的一些写法
    快速排序
    选择排序
    希尔排序
    直接插入排序
    冒泡排序
    Java修饰符大汇总
    字符串实现大数的相加
  • 原文地址:https://www.cnblogs.com/zyoohoo/p/2513809.html
Copyright © 2020-2023  润新知