在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver

  • 活动(Activity) - 用于表现功能  
  • 服务(Service) - 相当于后台运行的 Activity 
  • 广播(Broadcast) - 用于发送广播  
  • 广播接收器(BroadcastReceiver) - 用于接收广播 
  • Intent - 用于连接以上各个组件,并在其间传递消息  

 

 

 

------------------------------------------------------悲伤的分割线----------------------------------------------------------------------------
一、只是简单的接收

http://blog.csdn.net/vemitriq/article/details/6692043

这个很简单。

想要监听屏幕锁屏代码:

1)注册一个接收器(文中用程序注册)

        final IntentFilter filter = new IntentFilter();  
        filter.addAction(Intent.ACTION_SCREEN_OFF);  
        filter.addAction(Intent.ACTION_SCREEN_ON);  
        registerReceiver(mBatInfoReceiver, filter);

2)实现接收器程序

private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {  

.....

if(Intent.ACTION_SCREEN_ON.equals(action)){  
              System.out.println(1);

...}

 

 

------------------------------------------------------悲伤的分割线----------------------------------------------------------------------------

二、广播自定义的行为。

http://www.linuxidc.com/Linux/2011-08/40424.htm

1. 构造Intent,发送广播

static final String ACTION_1 = "com.eoeAndroid.action.NEW_BROADCAST_1";    //这个action是自己定义的
Intent intent = new Intent(ACTION_1);  
sendBroadcast(intent);


 2. 继承BroadcastReceiver类,实现一个广播接受类

 public class EoeAndroidReceiver extends BroadcastReceiver {  
    Context context;  
  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        // TODO Auto-generated method stub   
        this.context = context;  
        //接受信息并处理   
    }  
}
3. 注册和注销BroadcastReceiver

方法1:在AndroidManifest.xml中注册

<receiver Android:name="EoeAndroidReceiver1">  
    <intent-filter>  
        <action  
            Android:name="com.eoeandroid.action.NEW_BROADCAST_1"/>  
    </intent-filter>  
</receiver> 
方法2:直接在代码中注册
IntentFilter filter = new IntentFilter(NEW_BROADCAST);   //这个原文没有写,NEW_BROADCAST应该是等于"com.eoeandroid.action.NEW_BROADCAST_1"
EoeAndroidReceiver eoeAR = new EoeAndroidReceiver();  
registerReceiver(eoeAR, filter); 
注销
unregisterReceiver(eoeAR);

 

 ------------------------------------------------------悲伤的分割线----------------------------------------------------------------------------
三、那个终于彻底看懂了的程序

学习源:http://www.cnblogs.com/webabcd/archive/2010/01/21/1652982.html

主要的部分如图所示。Main函数一开始就注册接收 action为com.webabcd.service.msg(自定义action)的intent。

MyService的SendMsg函数调用sendBroadcast,广播行为为com.webabcd.service.msg的intent。

posted on 2011-10-25 14:09  meetcomet  阅读(353)  评论(0编辑  收藏  举报