android handle ui 更新

  /** handler更新数据标志 */
    protected static final int MSG_UPDATE_DATA                  = 2;
    protected static final int MSG_INSERT_DB                    = 0;
public void downloadData() {
        updateUIThread( MSG_UPDATE_DATA );
        mListView.refreshSelf();
    }
 public void updateUIThread( final int type ) {
        new Thread( new Runnable() {
            @Override
            public void run() {
                mUIhandler.sendEmptyMessage( type );
            }
        } ).start();
    }
 /** 刷新UI handler */
   private Handler  mUIhandler    = new Handler() {
	    public void handleMessage(  android.os.Message msg ) {
		switch ( msg.what ) {
		    case MSG_UPDATE_DATA:
			updateListView( ( List<TaskReceiveRspJson> ) TaskDbManager .getData( TaskDbManager.TABLE_TASK_RECEIVE, mQueryByState ) );
			break;
		     default:
			 break;

	}
    };
};

handler 处理方法

消息处理代码:
    private Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case 1 :
                bt.setText("正在下载...");
                break;
            case 2 :
                Bitmap bm = (Bitmap) msg.obj;
                iv.setImageBitmap(bm);
                break;
            case 3 :
                Bundle bundle = msg.getData();
                String data = bundle.getString("text");
                bt.setText(data);
                break;
        }
    }
};

消息发送代码:
方式一:
示例1: 
Message.obtain(handler,1).sendToTarget();

示例2: 
Bitmap bm = NetUtil.downloadNewImg(); 
Message.obtain(handler, 2, bm).sendToTarget();

示例3: 
// 这条消息,不携带数据,而是携带一段代码, 主线程处理这条消息时,会执行它携带的代码,而不执行其他代码
Message.obtain(handler, new Runnable() {
    public void run() {
        bt.setText("下载内涵图");

    }
}).sendToTarget();
方式二:

示例1: 
handler.obtainMessage(1).sendToTarget();

示例2: 
Bitmap bm = NetUtil.downloadNewImg(); 
handler.obtainMessage(2, bm).sendToTarget(); 

方式三:
示例1: 
Message msg = new Message(); 
msg.what =1; 
handler.sendMessage(msg);

示例2: 
Message msg = new Message(); 
msg.what =2; 
msg.obj = bm; 
handler.sendMessage(msg);

示例3: 
Message msg = new Message(); 
Bundle data = new Bundle(); 
data.putString("text", "正在下载..."); 
msg.what = 3; 

msg.setData(data); 
handler.sendMessage(msg);

示例4:
// 创建一个携带代码的消息对象,并发送给主线程执行
handler.post(new Runnable() {
    public void run() {
        // 在主线程中,处理消息时执行
        Toast.makeText(
                MainActivity.this, "下载结束", 
                Toast.LENGTH_SHORT).show();
    }
});

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

猜你喜欢

转载自knight-black-bob.iteye.com/blog/2317635