首页 > 代码库 > TimerTask中如何通过Handler交由UIThread更新UI

TimerTask中如何通过Handler交由UIThread更新UI

有两种方式:

第一种:post给Handler

        // 开启线程刷新
        handler = new Handler();

        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        mTextLat.setText(AppContext.getLatitude()+"");
                        mTextLng.setText(AppContext.getLongitude()+"");
                    }
                });
            }
        },0,1*1000);

第二种:给Handler发信息

// 开启线程刷新
        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case 1:
                        mTextLat.setText(AppContext.getLatitude()+"");
                        mTextLng.setText(AppContext.getLongitude()+"");
                }
                super.handleMessage(msg);
            }
        };

        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                Message msg = new Message();
                msg.what = 1;
                handler.sendMessage(msg);
            }
        },0,1*1000);

第二种的优势在于主线程能够处理多个线程传递来的信息从而更新不同的UI,而且层次上更加分明。

TimerTask中如何通过Handler交由UIThread更新UI