2017-04-05 78 views
1

我在我的應用程序中使用BroadCast Receiver。我在我的應用程序中有很多活動。在MainActivity.java二手broadcard接收機如下:使用廣播接收器在應用程序中的所有活動

private BroadcastReceiver smsReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Retrieves a map of extended data from the intent. 
     final Bundle bundle = intent.getExtras(); 
     try { 
      if (bundle != null) { 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

我當消息即將到來,MyActivity在焦點通知。 現在當我的其他活動焦點時,我沒有得到通知。 有沒有一種常見的方式使用BroadCast的東西作爲全球性的方式?爲所有活動?

+0

你在哪裏註冊/取消註冊此接收器? – earthw0rmjim

+0

您是否在'manifest.xml'中註冊了receiver? –

+0

@ MainActivity的earthw0rmjim OnREsume()和OnPause()。 – AskingToStack

回答

3

/註銷創建抽象活動稱爲AbstractActivity。使所有其他活動擴展此抽象活動並在該抽象活動中聲明broadCastReceiver。

public AbstractActivity extends Activity{....} 

public SubActivity extends AbstractActivity{...} 

或者你可以使用EventBus:

EventBus

閱讀完整getting started guide

1

有沒有一種常見的方式使用BroadCast的東西作爲全球性的方式?

你應該註冊您在BroadcastReceiver而不是具體Activity

<receiver 
     android:name="com.example.android.NotificationReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.example.android" /> 
     </intent-filter> 
    </receiver> 

方式二: 做出獨立的自定義類的BroadcastReceiver和基址寄存器的所有Activity

0

廣播接收機始終是他們的util你註銷廣播接收機。

爲了解決您的問題,您必須在應用程序級別註冊廣播。

如:

public MyApplication extends Application { 

onCreate() { 

// register broadcast receiver here 

} 

    private BroadcastReceiver smsReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Retrieves a map of extended data from the intent. 
      final Bundle bundle = intent.getExtras(); 
      try { 
       if (bundle != null) { 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    } 

那之後,你可以在任何時候進行任何行動,現在播出的應用級接收器。你也不會面臨任何活動內存泄漏。

+0

這是另一種解決方案.. !!謝謝@jitesh先生 – AskingToStack

相關問題