您的位置:首页 > 移动开发 > Android开发

android中的自定义广播

2015-03-06 14:01 246 查看
首先呢 我们创建的其实是广播接收者 是接受广播的 而不是处理广播的。

我们在发送广播的时候 其实就是和开启一个activity一样 借助intent来实现

记好我们在发送广播的时候 类似于我们的 隐式开启activity 通过action来实现。

我们创建广播的时候 注意需要注册的

广播特殊既可以在清单文件里面注册 也可以在代码里面注册。

我们代码里面注册广播接受者的时候

是在主activity 最先加载的activty里面注册的。

IntentFilter filter = new IntentFilter();

filter.addAction("com.itheima40.help");

// java代码注册广播接受者, 特点: 优先级要比清单文件的要高, 当前的广播接受者的生命周期的期限和activity是相关联的.

registerReceiver(new LeiFengReceiver(), filter);

@Override

protected void onDestroy() {

super.onDestroy();

// 解注册

unregisterReceiver(leiFengReceiver);

}

<receiver android:name="com.itheima40.sendbroadcast.Level1Receiver" >

<intent-filter android:priority="1000" >

<action android:name="com.itheima40.songwennuan" />

</intent-filter>

</receiver>

注意 在清单文件里面注册的时候 我们还可以设置他的优先级别

创建广播接受者:

主要是 当我们接受到这个广播之后 我们要进行的操作。

一个广播接收者 还可以注册多个动作 随后 当我们

public class WDGReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if("com.itheima40.help".equals(action)) {

System.out.println("乡长王大干: 有人喊救命, 假装没听见");

} else if("com.itheima40.songwennuan".equals(action)) {

String resultData = getResultData();

System.out.println("乡长王大干收到通知, 送温暖: " + resultData);

//setResultData("一桶油+两箱白像方便面");

abortBroadcast();

}

}

}

传递数据的时候 我们可以设置数据

String resultData = getResultData();

System.out.println("市办公厅收到通知, 送温暖: " + resultData);

setResultData("500块钱");

获得传递的数据 同时进行更改。

还可以终止广播的传送。

发送广播:

public void sendBroadcast(View v) {

Intent intent = new Intent("com.itheima40.help");

sendBroadcast(intent); // 发送一个广播, 广播的动作为: com.itheima40.help

}

/**

* 有序广播

* @param v

*/

public void sendOrderBroadcast(View v) {

Intent intent = new Intent("com.itheima40.songwennuan");

sendOrderedBroadcast(

intent,

null,

new LeiFengReceiver(), // 无论是否拦截这个有序广播, 最终此参数指定的广播接受者必须收到.

null,

0,

"10000块钱",

null);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: