BrocastReceiver(二)

来源:互联网 发布:(综琼瑶)知君用心 编辑:程序博客网 时间:2024/06/14 15:58

此篇讲解BrocastReceiver的详细使用demo


1.在清单文件中注册广播(静态广播)

<!-- 注册广播 -->

<receiver
           android:name="com.finddreams.runningman.MyBrocastReceiver"
           android:exported="false" >
           <intent-filter>
               <action android:name="com.finddreams.runningman.brocastreceiver3" />
           </intent-filter>

 </receiver>



2.java代码中实现广播类

package com.finddreams.runningman;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


/**
 * 广播
 * */


public class MyBrocastReceiver extends BroadcastReceiver{


@Override
public void onReceive(Context arg0, Intent arg1) {
String action=arg1.getAction();
Log.d("MyBrocastReceiver", "action----:"+action);
if(RuningManActivity.myAction1.equals(action)){
String date1=arg1.getStringExtra("date1");
String date2=arg1.getStringExtra("date2");
String date3=arg1.getStringExtra("date3");
Log.d("MyBrocastReceiver", "动态广播----广播接收者1111111接收到了广播!!!!!!!");
Log.d("MyBrocastReceiver", "date1----:"+date1);
Log.d("MyBrocastReceiver", "date2----:"+date2);
Log.d("MyBrocastReceiver", "date3----:"+date3);
}else if(RuningManActivity.myAction2.equals(action)){
String date1=arg1.getStringExtra("date1");
String date2=arg1.getStringExtra("date2");
String date3=arg1.getStringExtra("date3");
Log.d("MyBrocastReceiver", "动态广播----广播接收者2222222222接收到了广播!!!!!!!");
Log.d("MyBrocastReceiver", "date1----:"+date1);
Log.d("MyBrocastReceiver", "date2----:"+date2);
Log.d("MyBrocastReceiver", "date3----:"+date3);
}else if(RuningManActivity.myAction3.equals(action)){
String date1=arg1.getStringExtra("date1");
String date2=arg1.getStringExtra("date2");
String date3=arg1.getStringExtra("date3");
Log.d("MyBrocastReceiver", "静态广播----广播接收者333333333接收到了广播!!!!!!!");
Log.d("MyBrocastReceiver", "date1----:"+date1);
Log.d("MyBrocastReceiver", "date2----:"+date2);
Log.d("MyBrocastReceiver", "date3----:"+date3);
}
}

}


3.java代码中注册 发送 注销广播


public static String myAction1="com.finddreams.runningman.brocastreceiver1";
public static String myAction2="com.finddreams.runningman.brocastreceiver2";
public static String myAction3="com.finddreams.runningman.brocastreceiver3";


/**
* 发送广播1
 */

public void showbrodialog(View v){
Intent intent=new Intent();  
       intent.setAction(myAction1);//设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
       intent.putExtra("date1", "张三");
       intent.putExtra("date2", "李四");
       intent.putExtra("date3", "王五");
       sendBroadcast(intent);//发送广播
}

/**
 * 发送广播2
 */

public void showbrodialogs(View v){
Intent intent=new Intent();  
       intent.setAction(myAction2);//设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
       intent.putExtra("date1", "25");
       intent.putExtra("date2", "36");
       intent.putExtra("date3", "28");
       sendBroadcast(intent);//发送广播
}

/**
 * 发送广播3
 */

public void showbrodialogss(View v){
Intent intent=new Intent();  
       intent.setAction(myAction3);//设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
       intent.putExtra("date1", "男");
       intent.putExtra("date2", "女");
       intent.putExtra("date3", "男");
       sendBroadcast(intent);//发送广播
}

/**
 * 注册广播1
 * */

public void MyRegister1(){
myBrocastReceiver1=new MyBrocastReceiver();
       IntentFilter filter=new IntentFilter();
       filter.addAction(myAction1);//只有持有相同的action的接受者才能接收此广播
       registerReceiver(myBrocastReceiver1, filter);
}



/**
 * 注册广播2
 * */

public void MyRegister2(){
myBrocastReceiver2=new MyBrocastReceiver();
       IntentFilter filter=new IntentFilter();
       filter.addAction(myAction2);//只有持有相同的action的接受者才能接收此广播
       registerReceiver(myBrocastReceiver2, filter);
}


/**
* 注销广播
 * */

public void UnMyRegister(){
if(null!=myBrocastReceiver1){
unregisterReceiver(myBrocastReceiver1);
Log.d("RuningManActivity", "1111111111注销广播!!!!!");
}
if(null!=myBrocastReceiver2){
unregisterReceiver(myBrocastReceiver2);
Log.d("RuningManActivity", "2222222222注销广播!!!!!");
}
}


4.结果

4.1.发送广播1时





4.2.发送广播2时



4.3.发送广播3时



注意

1.BroadcastReceiver(广播) 是Android四大组件之一

2.和activity一样需要注册 

3.有生命周期即onReceive方法执行完成后广播结束

4.不可做耗时操作(10s ANR)



0 0
原创粉丝点击