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

来源:互联网 发布:折弯机模具编程 编辑:程序博客网 时间:2024/05/16 15:27

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

方式一:静态广播

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);
0 0
原创粉丝点击