android 广播的使用(自用)

广播接受者的注册有两种方式:

1.采用清单文件注册的广播接收者,只要应用程序被部署到手机上,广播接收者就生效了

2.采用代码的方式注册的广播接收者,生命周期与激活他的这段代码所在的组件生命周期相同

因为我们代码注册一个广播时使用:this.registeBroadcastReceiver()那么我们为了保证锁屏的广播接收者长期的能够接收到广播事件,保证调用者必须长时间在系统存活(采用服务的方式)

步骤:

1.创建一个service类,在onCreate()方法中使用registerReceiver(receiver,filter);注册一个广播接收者

receiver:我们可以定义一个广播接收者类继承BroadcastReceiver把我们要处理的方法事件写在onReceive()方法中

filter:广播接收者的意图过滤器

IntentFilter filter = new IntentFilter();

filter.setPriority(1000);设置优先级最高1000

filter.addAction(Intent.ACTION_SCREEN_OFF);//设置关心的动作,锁屏

 

2.在service类中的onDestroy()方法中反注册这个广播this.unregisterReceiver(receiver);//防止log异常

3.在activity中开启服务或者关闭服务

Private Intent lockscreenMonitorIntent = new Intent(this,LockSreenMonitor.class);

startService(lockscreenMonitorIntent );

stopService(lockscreenMonitorIntent );





//


private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
}
}
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mReceiver, filter);
}


@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}




广播接收者: 

1.注册(Androidmanifest.xml 或其它地方注册).
2.写广播接收者代码 class MyReceiver extends BroadcastReceiver { onReceiver(){} }
3.其它地方发送广播代码(有参数).


//  以IndroidLauncher为例:

//..............AndroidManifest.xml............................

        <activity

            android:name="cn.ingenic.launcher.IngenicLauncher"
            <intent-filter>
                <action android:name="cn.ingenic.action.NOTIFICATION_CLEAR.TEST" />
            </intent-filter>
        </activity>


private void registerLauncherReceivers() {
IntentFilter filter = new IntentFilter();
filter.addAction("cn.ingenic.action.NOTIFICATION_CLEAR.TEST");
mLauncherReceiver = new LauncherReceiver();
registerReceiver(mLauncherReceiver, filter);
}


private class LauncherReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if ("cn.ingenic.action.NOTIFICATION_CLEAR.TEST".equals(action)) {

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值