应用开发中,经常会遇到需要多线程技术的时候,比如UI显示和数据处理分开。
在实际应用中经常会遇到这种场景,我们需要新开一个线程来监听数据状态(数据状态的改变,接收数据,发送数据等等),当发现数据状态改变时通知主线程(通过消息机制发送消息到主线程),主线程接收到通知之后进行处理(自定义消息处理接口)。
具体实现如下:
- 准备线程的创建和消息的处理,这里需要用到android里面的Handler和Thread类,在主线程中添加两个成员Handler、Thread,并实现消息的发送和处理:
- private Handler handler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- switch(msg.what){
- case 0:
- //添加自定义消息处理
- //...
- break;
- default:break;
- }
- }
- };
- private Thread MagCardDataListenThread = new Thread(new Runnable(){
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while(isMagCardRunning){
- try{
- Thread.currentThread().sleep(1000);
- //状态改变时发送消息到主线程
- if(magcard.IsGetMagCardData()){
- Message msg = new Message();
- msg.what = 0;
- handler.sendMessage(msg);
- }
- }catch(InterruptedException e){
- e.printStackTrace();
- }
- }
- }
- });
- 启动子线程
- MagCardDataListenThread.start();