一,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 + "");
}
}
}