/** 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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!