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

Android--从零单排系列(7)--广播的使用和利用广播进行数据的传递

2016-07-04 21:22 633 查看

做下广播的两种方式的使用总结

方式一:静态广播

1.静态注册广播:

静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播弹出一个toast,显示“我是静态广播”二字。

*1,写一个类MyBroadcast 继承BroadcastReceiver (也可以写内部类的广播接受者)

public class MyBroadcast extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"我是静态的广播", Toast.LENGTH_LONG).show();
}

}


*2,清单文件注册广播

<receiver android:name="com.example.staticbroadcast.MyBroadcast" >
<intent-filter>
<action android:name="com.test.StaticBroadcast" />
</intent-filter>
</receiver>


*3,相对应的activity处理发送广播(从而实现广播里面的逻辑)

this.static_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.test.StaticBroadcast");
sendBroadcast(intent);
}
});


结果是弹出一个土司我是静态的广播

方式二:动态广播:

*简单分析为:

*1,写,一个广播接受者MyBroadcastReceiver(内部类或者外部类)在他的onReceive处理接受到广播的逻辑

*2,注册广播接受者(记得取消注册)

动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册

//创建文件过滤器
IntentFilter intentFilter = new IntentFilter();
//添加Action
intentFilter.addAction("DynamicBroadcast");
//注册
registerReceiver(myBroadcastReceiver, intentFilter);


*3,在想触发的条件下发送广播

Intent intent = new Intent();
//对应哪个广播                intent.setAction("DynamicBroadcast");
//发送
sendBroadcast(intent);


public class MainActivity extends Activity {

private Button static_btn;
private Button dynamic_btn;
private BroadcastReceiver myBroadcastReceiver;

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

this.static_btn = (Button) this.findViewById(R.id.button1);
this.dynamic_btn = (Button) this.findViewById(R.id.Button01);
//广播接受者
myBroadcastReceiver = new BroadcastReceiver(){

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this,"你好,这里是动态广播!", Toast.LENGTH_LONG).show();
}

};

this.dynamic_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//发送广播
Intent intent = new Intent();
//标识intent.setAction("DynamicBroadcast");
sendBroadcast(intent);
}
});
}

@Override
protected void onStart() {
super.onStart();
//注册广播
IntentFilter intentFilter = new IntentFilter();                 //标识
intentFilter.addAction("DynamicBroadcast");
registerReceiver(myBroadcastReceiver, intentFilter);//参1,广播接受者,参2,文件过滤器

}

@Override
protected void onStop() {
super.onStop();
//取消注册
unregisterReceiver(myBroadcastReceiver);
}
}


关于怎样使用broadcast实现activity和fragment之间的通信

仔细的看我上边的动态广播的步骤分析

*简单分析为:

*1,写,一个广播接受者MyBroadcastReceiver(内部类或者外部类)在他的onReceive处理接受到广播的逻辑

*2,注册广播接受者(记得取消注册)

动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册

//创建文件过滤器
IntentFilter intentFilter = new IntentFilter();
//添加Action
intentFilter.addAction("DynamicBroadcast");
//注册
registerReceiver(myBroadcastReceiver, intentFilter);


*3,在想触发的条件下发送广播

Intent intent = new Intent();
//对应哪个广播                intent.setAction("DynamicBroadcast");
//发送
sendBroadcast(intent);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  broadcastreceiver