我有一個包含許多活動的應用程序。將廣播發送到不在活動堆棧中的活動
應用程序的狀態是由數據保存我通過Web服務
在同一時間或其他從互聯網的接受,我的web服務會告訴我,我需要進行登錄,之後我已經登錄,在過去和登錄活動不在活動堆棧上。
我想,當我收到信息重新登錄(在http相關的類),發送廣播到系統,打開登錄活動。
這個廣播到達時,我需要在哪裏註冊這個廣播接收器,因爲我可能在任何活動中?
我有一個包含許多活動的應用程序。將廣播發送到不在活動堆棧中的活動
應用程序的狀態是由數據保存我通過Web服務
在同一時間或其他從互聯網的接受,我的web服務會告訴我,我需要進行登錄,之後我已經登錄,在過去和登錄活動不在活動堆棧上。
我想,當我收到信息重新登錄(在http相關的類),發送廣播到系統,打開登錄活動。
這個廣播到達時,我需要在哪裏註冊這個廣播接收器,因爲我可能在任何活動中?
如果你不知道先驗這Activity
將運行時發出的信號,最好的辦法是將其定義在Manifest
文件,像這樣:
<receiver android:name="YourReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
您可以註冊廣播接收器在AndroidManifest.xml這樣
<receiver android:name=".YourBroadcastReceiver" android:exported="false">
<intent-filter>
<action android:name="YOUR_PACKAGE_NAME.INETENT_NAME" />
</intent-filter>
</receiver>
如果你的廣播僅用於處理內部的意圖,一定要聲明爲exported false
別的一些其他應用程序可以隨時通過發送廣播中斷並打開您的登錄。
編輯:
這名與包名的BroacastReceiver的確切路徑。如果它駐留在你的主包中,點(。)就足夠了,因爲引用是從清單標籤內部定義的包中獲取的,但是如果它駐留在像yourcommonapppackage.broadcastreceiver.YourBroadcastReceiver這樣的其他包中,則必須相應地給出名稱。
您可以給出是否滿滿包裝或參考您的主包裝。
我試過了,但廣播似乎沒有收到 –
也許我錯過了什麼?我把這段代碼放在清單中,聲明瞭一個具有相同名稱的類,並將邏輯寫入其中,然後我將Intent intent = new Intent(「THE_NAME_OF_THE_ACTION」); context.sendBroadcast(意向); –
@LenaBru是您的根接口應用程序包中的BroadcastReceiver,它在mainifest中的第一行中定義。如果不在名稱屬性中添加像在我的清單中的'.yourreceiver.YourBroadcastReceiver' – pyus13
在清單 – cYrixmorten
廣播接收器,如果它不依賴於應用程序中的任何組件使它在清單中,它將監聽如果應用程序不活躍的動作 –
**「我的web服務會告訴我,我需要執行登錄「** - 它是如何告訴你的?另外,你所需要做的就是使用'startActivity(...)'開始登錄活動? – Squonk