您的位置:首页 > 移动开发 > Android开发

Android开发之BroadcastReceiver

2016-08-18 16:05 381 查看

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("飞行模式");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息