上午又好好看了看昨天的笔记,感觉逻辑比较混乱,其实广播有三点就够了
1.广播接收器,继承BroadcastReceiver
2.发送广播,例如在onClick方法中使用sendBroadcast
3.进行注册监听,在AndroidManifest.xml文件中
这是主要的核心,具体的广播具体实现。
一.本地广播
为了安全起见,引入本地广播,广播只能在应用程序内部传递,广播接收器也只能接收来自本应用程序发出的广播
public class MainActivity extends Activity {
private IntentFilter intentFilter;
private LocalReceiver localreceiver;
private LocalBroadcastManager localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
localBroadcastManager = LocalBroadcastManager.getInstance(this);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(
"com.example.broadcastlocal.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);//发送本地广播
}
});
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcastlocal.LOCAL_BROADCAST");
localreceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localreceiver, intentFilter);//注册本地广播监听器
}
private void onDestory() {
super.onDestroy();
localBroadcastManager.unregisterReceiver(localreceiver);
}
class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {//广播接收器
Toast.makeText(context, "received local broadcast",
Toast.LENGTH_LONG).show();
}
}
}
在本地广播中,注册监听放在了onCreate()方法里面了
首先通过LocalBroadcastManager的getInstance()方法取得实例,在注册广播接收器的时候调用localBroadcastManager的registerReceiver()方法,发送的时候调用的是localBroadcastManager的sendBroadcast()方法,接收还是一样,新建类继承BroadcastReceiver即可
今天上午写的一个程序,怎么也出不来广播,调了半天,最后才发现是有个字母没打上去,字符串中的东西,错了也不报错,以后得多加小心了!