Broadcast
广播使Android的四大组件之一,但也不算太难。发送广播需要使用Intent()方法与sendBroadcast()方法:
Intent intent = new Intent(
"com.example.broadcastbestpractice.FORCE_OFFLINE");
sendBroadcast(intent);
而接收广播则需要创建广播接收器的类:
广播接收器继承BroadcastReceiver,并在其onReceive()方法中实现接收广播后我们想要进行的具体逻辑操作。
class ForceOfflineRecevier extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);//使用AlertDialog.Builder构建对话框
builder.setTitle("Warning");
builder.setMessage("You are forced to be offline. Please try to login again.");
builder.setCancelable(false);//使用setCancelable设置对话框不可取消
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
//使用setPositiveButton来给对话框注册确定按钮
@Override
public void onClick(DialogInterface dialogInterface, int which) {
ActivityCollector.finishALL();//销毁所有活动
Intent i = new Intent(context,LoginActivity.class);
context.startActivity(i);//重新启动LoginActivity
}
});
builder.show();
}
}
那么广播接收器具体是如何接收发来的广播呢?:
获取一个过滤器实例,使用addAction()为其添加一个action,这个action就是广播信号。
再获取接收器实例,使用registerReceiver(接收器实例,过滤器实例)对该广播接收器进行动态注册,此时广播接收器就可以真正接收广播信息了。
一般将该方法写于onCreate()或onResume()方法中:
protected void onResume() {
// 重写了onResume用来注册ForceOfflineRecevier
super.onResume();
IntentFilter intentFilter = new IntentFilter();//获取过滤器实例
intentFilter.addAction("com.example.broadcastbestpractice.FORCE_OFFLINE");
receiver = new ForceOfflineRecevier();
registerReceiver(receiver,intentFilter);//使receiver具备接收
// com.example.broadcastbestpractice.FORCE_OFFLINE广播的功能
}
不要忘记在onPause()或者onDestory()方法中写上取消注册方法:
unregisterReceiver(receiver); 好吧,感觉不是很看得懂
页:
[1]