Android学习之路十三:BroadCast

  Android的广播机制包含三个基本要素:

1.广播(Broadcast)----用于发送广播;

2.广播接收器(BroadcastReceiver)----用户接收广播;

3.意图内容(Intent)----用于保存广播相关信息的媒介。

  Broadcast是一种广泛的应用在应用程序之间传输信息的机制。而BroadcastReceiver是对发出来的Broadcast进行过滤并影响的组件。

  注册BroadcastReceiver有两种方式:静态注册和动态注册。

  方式一:静态的在AndroidManifest.xml中用receiver标签申明注册,并在标签内用intent-fiter标签注册过滤器;

  方式二:动态的在代码中先定义并设置好一个IntentFilter对象,然后在需要注册的地方调用Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果动态注册的BroadcastReceiver的Context对象被小慧时,BroadcastReceiver也就自动取消注册了。

  案例:

  java代码:

package app.book;

import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class MainActivity extends Activity {
    ProgressBar battery;
    TextView batteryCount;
    IntentFilter intentFilter;
    
    /*发送广播:
    Intent it = new Intent();
    it.setAction(action);
    sendBroadcast(it);*/
    
    //动态注册方式
    //接收广播
    private BroadcastReceiver bcr = new BroadcastReceiver() {
        
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            // TODO Auto-generated method stub
        }
    };
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);//生命周期
        setContentView(R.layout.activity_main);//设置布局管理器
        
        battery = (ProgressBar) findViewById(R.id.myProgress);
        batteryCount = (TextView) findViewById(R.id.myText);
        battery.setMax(100);
    }
    
    @Override
    protected void onStart(){
        super.onStart();
        //注册
        intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(bcr, intentFilter);
    }

    @Override
    protected void onStop(){
        super.onStop();
        //取消注册
        unregisterReceiver(bcr);
    }
}
原文地址:https://www.cnblogs.com/thinksasa/p/2919263.html