Android开发之BroadcastReceiver

来源:互联网 发布:如何看懂财务报表 知乎 编辑:程序博客网 时间:2024/06/14 12:02

BroadcastReceiver用于监听被广播的事件(Intent)

如何创建一个BroadcastReceiver?

1.首先新建一个类,该类继承BroadcastReceiver类并重写onReceive方法,在该方法中进行接收到广播后的处理。

2.对我们的BroadcastReceiver进行注册,告知系统该Receiver接受什么类型的广播。

注意:一旦onReceive方法执行完毕,该BroadcastReceiver对象就会被销毁。所以会出现多次广播,多次处理的情况。


进行BroadcastReceiver注册的两种方法:

1.在应用程序的代码中进行注册(注意:如果Receiver用于更新UI,则使用该方法。在Activity启动时注册,在Activity不可见时取消注册)

注册:MainActivity.this.registerReceiver(receiver, filter);

取消注册:MainActivity.this.unregisterReciver(receiver, filter);

2.在AndroidManifest.xml当中进行注册(注意:使用该方法注册的Receiver,无论应用程序是否开启,该Receiver都能工作)


MainActivity.java:

package com.mycompany.testbroadcastreceiver;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button regButton;    private Button unregButton;    private static final String AIRPLANEMODE_ACTION = "android.intent.action.AIRPLANE_MODE";    private SMSReceiver receiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        regButton = (Button)findViewById(R.id.regButton);        unregButton = (Button)findViewById(R.id.unregButton);        regButton.setOnClickListener(new RegButtonListener());        unregButton.setOnClickListener(new UnregButtonListener());    }    class RegButtonListener implements View.OnClickListener{        @Override        public void onClick(View v) {            // 生成SMSReceiver对象            receiver = new SMSReceiver();            // 生成一个IntentFilter对象,使用该对象设置接收的广播类型            IntentFilter filter = new IntentFilter();            filter.addAction(AIRPLANEMODE_ACTION);            // 进行注册            MainActivity.this.registerReceiver(receiver, filter);        }    }    class UnregButtonListener implements View.OnClickListener{        @Override        public void onClick(View v) {            // 进行取消注册            MainActivity.this.unregisterReceiver(receiver);        }    }}

SMSReceiver.java:

package com.mycompany.testbroadcastreceiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/** * Created by Administrator on 2016/8/18. */public class SMSReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("飞行模式");    }}


0 0