Android四大组件之一 --Broadcast(广播通信)

一,Broadcast简介

	Broad cast 广播是广泛应用在应用程序之间传输信息的机制,而Broadcast Receiver是对发送出来
	的广播进行过滤接收并响应的一类组件

二,Broadcast机制

三,Broadcast使用方法

在这里插入图片描述

   private BroadcastReceiver broadcastReceiver = new BroadcastLowReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
            super.onReceive(context, intent);
        }
    };
    onReceive生命周期只有十秒 不能直接在里面写耗时操作应该发送Intent给Service来完成
    这里不能使用子线程l来解决 BroadcastReceiver生命周期很短 子线程还没有结束 Broadcast就先结束了

四,Broadcast类型和接受方法

1.静态注册广播

public class BroadcastLowReceiver extends BroadcastReceiver {

private String TAH = "BatteryLowReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    Log.d("###","" + intent);
}

}

在这里插入图片描述

2.动态注册

public class MainActivity extends AppCompatActivity {

//1.初始化
private BroadcastReceiver broadcastReceiver = new BroadcastLowReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //2.注册广播
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(broadcastReceiver,filter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //销毁广播
    unregisterReceiver(broadcastReceiver);
}

}

五,BroadcastReceiver的API

六,Broadcast应用实例

动态注册广播 获取电池电量
public class MainActivity extends AppCompatActivity {
//1.初始化
private BroadcastReceiver broadcastReceiver;
private TextView a ;
private TextView b ;
private TextView c ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    a = findViewById(R.id.a);
    b = findViewById(R.id.b);
    c = findViewById(R.id.c);
}

@Override
protected void onResume() {
    super.onResume();
    Mbroadcast();
}

private void Mbroadcast(){
    broadcastReceiver = new Mbroadcast();
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(broadcastReceiver,intentFilter);


}
@Override
protected void onDestroy() {
    super.onDestroy();
    //销毁广播
    unregisterReceiver(broadcastReceiver);
}
 class Mbroadcast extends BroadcastReceiver {
     public int health;
     public int level;
     public int status;

     @Override
     public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
         if (action == Intent.ACTION_BATTERY_CHANGED) {
             health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_GOOD);
             level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
             status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_DISCHARGING);
             a.setText(health + "");
             b.setText(level + "");
             c.setText(status + "");

         }
     }
 }

猜你喜欢

转载自blog.csdn.net/weixin_43609490/article/details/87935025