1. 程式人生 > >Android廣播之本地廣播

Android廣播之本地廣播

廣播是android是android四大元件之一,這篇文章是我學習本地廣播的記錄

本地廣播:指的是應用內廣播,只有本應用內才能監聽到的廣播,安全性比全域性廣播好很多

下面是用法:

(1)傳送廣播:

1.在Activity中宣告LocalBroadcastManager類物件

private LocalBroadcastManager localBroadcastManager;//廣播管理器
2.在onCreate()方法中 例項化
localBroadcastManager = LocalBroadcastManager.getInstance(this);//獲取廣播管理器例項

3.在你需要傳送廣播的地方,傳送廣播

                                Intent intent =  new Intent("com.parking.LocalBroadcast");
                                intent.setClass(LoginActivity.this,MainActivity.class);
                                localBroadcastManager.sendBroadcast(intent);
                                startActivity(intent);

我這裡傳送廣播的同時順便跳轉了,這裡還可以利用intent傳一些訊息

(2)接收本地廣播

1.新建廣播管理器,篩選器,自定義內部類接收器物件

    /*本地廣播*/
    private LocalBroadcastManager localBroadcastManager;
    private IntentFilter intentFilter;
    private LocalReceiver localReceiver;

2.新建內部類,繼承於BroadcastReceiver類,並重寫onReceive()方法

    class LocalReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            //showResponse("登入成功");
            //textView.setText("登入成功了");
            Toast.makeText(MainActivity.this, "驗證登入成功", Toast.LENGTH_SHORT).show();

        }
    }
這裡做可以處理接收到廣播的邏輯操作,這裡這些內部類可以寫到一個公共的activity類管理器中,這裡我比較粗暴,就直接擼了

3.獲取相應的例項,並註冊廣播

        /*獲取廣播管理器例項*/
        localBroadcastManager = LocalBroadcastManager.getInstance(this);
        /*例項化篩選器和接受器並註冊廣播*/
        intentFilter = new IntentFilter();//例項化篩選器
        intentFilter.addAction("com.parking.LocalBroadcast");//新增監聽廣播的action
        localReceiver = new LocalReceiver();//例項化本地廣播接收器
        localBroadcastManager.registerReceiver(localReceiver, intentFilter);//註冊廣播

注意的是這裡的action就是你傳送廣播的那個action,可以自己定義,這個是廣播的標識

4.當activity銷燬的時候我們也要登出廣播的註冊,一般我們在onDestroy()方法,這個看你的需求,相應的生命週期,放在對應的地方

   @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(localReceiver);
    }

差不多就是這些,新手學習記錄,多多指教