Android 广播机制 BroadCastReceiver

1.注意广播发起的动作,以及需要在AndroidMainfest.xml文件中去注册这个广播,并且这个广播需要用intent-filter进行过滤。 

2.系统级的广播,调用一样,只是需要在AndroidMainfest.xml文件中去注册这个广播,并且添加系统级过滤条件。 

3.广播也可以在代码中注册,但需要注意的是注册的同时不要忘记去注销这个广播:

一般是在Activity.onResume中去注册这个广播:

IntentFilter filter = new IntentFilter();

BroadcastReceiver receiver = new BroadcastReceiver();

registerBroadcast(receiver,filter); 

一般是在Activity.onPause中去注销这个广播

unRegisterBroadcast(receiver); 

另外广播尽量在代码中注册与销毁,这样可以节省设备电池的使用,如果注册在AndroidMainfest.xml中,则这个广播一直存在,且不便于管理,耗电。 

package com.king.android.controls;

import com.king.android.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**

 * 描述:发起广播实例
 *  * 作者:Andy.Liu
 * 时间: 2012-7-18  下午11:57:20
 **/
public class BroadCastReceiverActivity extends Activity {
    public static final String MY_BROADCAST ="com.king.android.MY_BROADCAST";
    public static final String MY_WORD ="myword";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btnSend = (Button) findViewById(R.id.btn_voice);
        btnSend.setText("发广播");
        btnSend.setVisibility(View.VISIBLE);
        btnSend.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(MY_BROADCAST);
                intent.putExtra(MY_WORD, "my name is kobe");
                sendBroadcast(intent);
            }
        });
    }
}




package com.king.android.controls;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**

 * 描述:接收广播
 * 作者:Andy.Liu
 * 时间: 2012-7-18  下午11:58:14
 **/
public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String msg = intent.getStringExtra(BroadCastReceiverActivity.MY_WORD);
        Toast.makeText(context, "已经接收广播了============="+msg,Toast.LENGTH_LONG).show();
    }
}

原文地址:https://www.cnblogs.com/liuzenglong/p/2598449.html