您的位置:首页 > 其它

Broadcast 广播机制总结

2015-12-01 19:00 288 查看
Android中广播可分为标准广播有序广播两种。

标准广播:是异步执行的广播,广播发出后所有的广播接收器都会在同一时刻接收到消息,这种模式效率高,但是它无法被拦截。

有序广播:是同步执行的广播,广播发出之后同一时刻只能有一个广播接收器能够收到信息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的接收器先收到消息,而且接收器还可以选择拦截消息,使后面的接收器无法接收到消息。

小项目:发送自定义广播

1、新建一个Android项目并且设置一个广播接收器,新建一个MyBroadcast.java

public class MyBroadcast extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// 接收器接收到广播后会触发onReceive方法,这里面是相关处理逻辑
Toast.makeText(context, "This is my Broadcast.", Toast.LENGTH_SHORT)
.show();
}

}


2、在AndroidManifest.xml文件中注册广播接收器

// 这个写到<application里
<receiver android:name=".MyBroadcast" >
<intent-filter>
<action android:name="com.example.mybroadcast.MY_BROADCAST"/>
</intent-filter>
</receiver>


action中的内容为广播内容,当监听器听到这条信息时就进入监听器。

3、在activity_main.xml中添加一个按钮

<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="100dp"
android:text="Send Broadcast"
android:textSize="20sp" />


4、在MainActivity.java中给按钮设置相应动作

...
public class MainActivity extends ActionBarActivity {

private Button button = null;
private Intent intent = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.send);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 将要发送的广播消息添加到Intent中
intent = new Intent("com.example.mybroadcast.MY_BROADCAST");
// 发送广播
sendBroadcast(intent);
}
});
}
...
}


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