Android 四大组件之(3)BroadcastReceiver广播事件处理以及与Notification的配合使用详解

Broadcast Receiver是指广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的,而广播事件处理机制则是系统级别的。

事件的广播比较简单,同样还是创建一个Intent,通过设置action属性,再sendBroadcast()将广播发出;

事件的接受是定义一个类继承自BroadcastReceiver,覆盖onReceiver()方法,在该方法中响应事件。

1、自己定义BroadcastReceiver来处理广播事件

public class MainActivity extends Activity {
	private Button b1;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.broadcast_demo);
        b1 = (Button)findViewById(R.id.sendBroadCast);
        b1.setOnClickListener(listener);
    }
	private OnClickListener listener = new OnClickListener() {
		@Override
		public void onClick(View view) {
			switch (view.getId()) {
			case R.id.sendBroadCast:
				Intent intent = new Intent("forBroadcast");
				intent.putExtra("name", "this is broadcast test!");
				sendBroadcast(intent);//发送广播
				break;
			default:
				break;
			}
		}
	};
}
public class MyReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		Log.i("receiver",intent.getStringExtra("name"));
	}
}

在Manifest中注册广播接收器

<receiver android:name="com.zj.broadcast.MyReceiver">
	<intent-filter>
		<action android:name="forBroadcast"></action>
	</intent-filter>
</receiver>

也可以使用代码的方式来注册一个广播接收器

一般我们是在Activity.onResume()中方法中使用Context.registReceiver()注册一个广播接收器,在onPause()中使用unRegisterReceiver()来销毁一个广播接收器。


2、系统广播事件的使用

除了上面我们自定义的广播事件,Android系统还提供了很多标准的广播Action。这些广播是系统自动发出的,我们直接定义事件接受器进行接受就可以使用这些系统消息了。

public class SystemBootReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		Log.i("service", "系统启动成功!");
	}

}

<!-- 注册系统启动完成的广播接收器 -->
		 <receiver android:name="com.zj.broadcast.SystemBootReceiver">
		 	<intent-filter>
		 		<action android:name="android.intent.action.BOOT_COMPLETED"></action>
		 	</intent-filter>
		 </receiver>

3、Notification与NotificationManager的使用

public class MainActivity extends Activity {
    private Button b1,b2;
    private Notification mNotification;
    private NotificationManager mNotificationManager;
    private static final int ID = 100;//通知的ID
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notification_demo);
        b1 = (Button)findViewById(R.id.sendBtn);
        b2 = (Button)findViewById(R.id.cancleBtn);
        b1.setOnClickListener(listener);
        b2.setOnClickListener(listener);
        //获取系统通知管理器实例
        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        //实例化自己的通知实例
        mNotification = new Notification();
        //显示图标
        mNotification.icon = R.drawable.icon;
        //显示事件
        mNotification.when = System.currentTimeMillis();
        //显示提示信息,该信息也会在状态栏中滚动显示
        mNotification.tickerText = "您有一条通知...";
        
        
    }
    private OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
            case R.id.sendBtn:
                //设置通知的点击事件(此处为跳转到ResultActivity)
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, ResultActivity.class);
                //使用PendingIntent包装Intent
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
                //设置事件
                mNotification.setLatestEventInfo(MainActivity.this, "通知标题...", "通知内容...", pi);
                //发送通知
                mNotificationManager.notify(ID, mNotification);
                break;
            case R.id.cancleBtn:
                //取消某ID的通知
                mNotificationManager.cancel(ID);
                break;
            default:
                break;
            }
        }
    };
}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值