分享

BroadcastReceiver 最好作为内部类 - Griffin's road to...

 xrzs 2010-02-05

BroadcastReceiver 最好作为内部类

文章分类:移动开发

BroadcastReceiver

 

大家对BroadcastReceiver 最熟悉的似乎是:

sendBroadcast(Intent)

registerReceiver(BroadcastReceiver,IntentFilter)

 

 

BroadcastReceiver 作为一个独立的class 会有一些棘手的问题 挡在大家面前

1. 如何把得到的信息返回给某个Thread

2. 代码比较零散 有一些阅读障碍

 

所以说 BroadcastReceiver 最好作为内部类

 

 

[代码]

1. 先定义一些供 Broadcast 与 Message 有关的字串 供BroadcastReceiver使用

Java代码 复制代码
  1. public class BroadcastColumn {   
  2.        
  3.     //Broadcast format definition: Broadcast_[destination]   
  4.     public final static String BROADCAST_TaskB = "Broadcast_TaskB";   
  5.        
  6.     //Message format definition: Message_[what]   
  7.     public final static String MESSAGE_STRING = "Message_string";   
  8.        
  9. }  

 

 

 

2. 定义 MessageListenerHelper extends BroadcastReceiver 并把 registerReceiver() 也放入其中

Java代码 复制代码
  1. public class MessageListenerHelper extends BroadcastReceiver {   
  2.         Context context;   
  3.            
  4.         MessageListenerHelper listener;   
  5.         //construct    
  6.         public MessageListenerHelper(Context c){   
  7.             context = c;   
  8.                
  9.             //to instance it   
  10.             listener = this;   
  11.         }   
  12.            
  13.         public void registerAction(String action){   
  14.             IntentFilter filter = new IntentFilter();   
  15.             filter.addAction(action);   
  16.                
  17.             context.registerReceiver(listener,filter);   
  18.         }   
  19.            
  20.         @Override  
  21.         public void onReceive(Context arg0, Intent arg1) {   
  22.             // TODO Auto-generated method stub   
  23.             Bundle b = arg1.getExtras();   
  24.                
  25.             if(b.containsKey(BroadcastColumn.MESSAGE_STRING)){   
  26.                 String string = b.getString(BroadcastColumn.MESSAGE_STRING);   
  27.                 Log.d("TAG",string);   
  28.             }   
  29.         }   
  30.            
  31.     }  

 

 

3. 定义 MessageListenerHelper 实例 并 注册

Java代码 复制代码
  1. MessageListenerHelper listener = new MessageListenerHelper(this);   
  2.         listener.registerAction(BroadcastColumn.BROADCAST_TaskB);  

 

 

 

 

done!

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多