BroadcastReceiver使用总结

    xiaoxiao2026-10-06  2

    Android中BroadcastReceiver使用分为动态注册BroastcastReceiver ,静态注BroastcastReceiver

    静态注册广播和动态注册广播的区别:静态注册则该广播不依赖于该应用是否处于活跃状态,是系统层的全局的广播监听;动态注册方式则该广播依赖于Activity的生命周期,必须在OnDestory()时注销该广播

    一、动态注册BroastcastReceiver 定义BroadcastReceiver: private BroadcastReceiver bcr1 = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); Toast.makeText(context, "动态:"+action, 1000).show(); } };

    **注册registerReceiver(bcr1, new IntentFilter(ACTION_1)); 代码如下。 关键代码是注册代码registerReceiver(bcr1, new IntentFilter(ACTION_1)),其他是一些简单的按钮, 及绑定的Click事件。**

    Button btn1,btn2,btn3; static final String ACTION_1 = "com.example.broadcastreceiverdemo.ACTION_1"; static final String ACTION_2 = "com.example.broadcastreceiverdemo.ACTION_2"; static final String ACTION_3 = "com.example.broadcastreceiverdemo.ACTION_3"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button)this.findViewById(R.id.button1); btn1.setOnClickListener(new ClickEvent()); btn2 = (Button)this.findViewById(R.id.button2); btn2.setOnClickListener(new ClickEvent()); btn3 = (Button)this.findViewById(R.id.button3); btn3.setOnClickListener(new ClickEvent()); registerReceiver(bcr1, new IntentFilter(ACTION_1)); } //发送广播 class ClickEvent implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub if(v == btn1) { Intent intent = new Intent(ACTION_1); sendBroadcast(intent); } if(v == btn2) { Intent intent = new Intent(ACTION_2); sendBroadcast(intent); } if(v == btn3) { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(ACTION_3); registerReceiver(bcr2, new IntentFilter(ACTION_3)); Intent intent = new Intent(ACTION_3); intent.putExtra("Conuntry", "China"); intent.putExtra("City", "ShangHai"); sendBroadcast(intent); } } ``` > **其中 v == btn1为发送至内部动态注册的BroadcastReceiver; v == btn2为发送至内部静态注册的BroadcastReceiver;    v == btn3为发送至系统级内部动态注册BroadcastReceiver(bt1和bt3基本一样,只是稍微加了addAction以及Intent的putExtra);** - **二、静态注册BroastcastReceiver。静态注册更要烦些,要在Androidmanifest.xml中注册**

    > **并且要实现一个类继承BroadcastReceiver**

    public class cls2 extends BroadcastReceiver{

    @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); Toast.makeText(context, "静态:"+action, 1000).show(); }

    } “`

    转载请注明原文地址: https://ju.6miu.com/read-1312665.html
    最新回复(0)