android系统广播使用经验

来源:互联网 发布:软件用户手册模板 编辑:程序博客网 时间:2024/05/22 03:21

安卓配置广播方式有两种:


一:配置注册

1、mainfase.xml文件里配置

<receiver android:name=".Receive" >
            <intent-filter>
                <action android:name="android.intent.action.SCREEN_ON" />
                <action android:name="android.intent.action.SCREEN_OFF" />
               。。。
            </intent-filter>
        </receiver>

2、创建Receive继承BroadcastReceiver的类

public class Receive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        System.out.println("!!!!!action!!!!!!!" + action);
        if (Intent.ACTION_SCREEN_ON.equals(action)) {
            System.out.println("!!!Receive  !!!ACTION_SCREEN_ON!!!!!!");
        } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
            System.out.println("!!!Receive !!ACTION_SCREEN_OFF!!!!!!!");
        }
    }
}


二:动态注册

1、在其activity里注册广播

IntentFilter filter = new IntentFilter();
 filter.addAction(Intent.ACTION_SCREEN_ON);
 filter.addAction(Intent.ACTION_SCREEN_OFF);

registerReceiver(new TestReceive(), filter);

2、创建TestReceive继承BroadcastReceiver的类

public class TestReceiveextends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        System.out.println("!!!!!action!!!!!!!" + action);
        if (Intent.ACTION_SCREEN_ON.equals(action)) {
            System.out.println("!!!Receive  !!!ACTION_SCREEN_ON!!!!!!");
        } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
            System.out.println("!!!Receive !!ACTION_SCREEN_OFF!!!!!!!");
        }
    }
}


通过测试,发现两种注册方式有不一样的效果(暂时发现这些,以后有其他发现会继续补充):

1、执行先后:

当你同时注册了两种注册广播方式,那么当广播触发时,动态注册要先执行(前提是两种广播都要前注册)

2、是否执行问题:

上面举例中,有Intent.ACTION_SCREEN_ON(打开屏幕)、Intent.ACTION_SCREEN_OFF(关闭屏幕),经过测试发现,动态广播能接收到广播,

而配置广播接收不到,这样说明,配置广播不能拦截到所以的系统广播,而动态广播可以。

总结:使用广播时,优先考虑动态广播,但有些特殊的广播类型不得不使用配置广播,如Intent.BOOT_COMPLETED(开机广播),所以在实际应用中,

要合理的使用哪种类型广播

0 0
原创粉丝点击