我有一個在活動中以編程方式註冊的廣播接收器。它對PACKAGE_REMOVED
意圖做出響應,當包被移除時,該意圖就會觸發。廣播接收器和暫停的活動
問題是,它沒有得到這個消息。我認爲這是由於當我離開活動並轉到其他活動以卸載應用程序時,意圖被激發,因此原始活動已暫停。 是不是暫停的活動(在中未註冊接收者)也會暫停接收方?
我有一個在活動中以編程方式註冊的廣播接收器。它對PACKAGE_REMOVED
意圖做出響應,當包被移除時,該意圖就會觸發。廣播接收器和暫停的活動
問題是,它沒有得到這個消息。我認爲這是由於當我離開活動並轉到其他活動以卸載應用程序時,意圖被激發,因此原始活動已暫停。 是不是暫停的活動(在中未註冊接收者)也會暫停接收方?
也許你可以註冊服務接收器將運行後臺
添加Receiver到你的項目,你會得到這個事件,甚至沒有開始你的應用程序。
public class TestReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TestReciver",intent.getAction()+"\n"
+intent.getDataString()+"\n"
+"UID: "+intent.getIntExtra(Intent.EXTRA_UID,0)+"\n"
+"DATA_REMOVED: "+intent.getBooleanExtra(Intent.EXTRA_DATA_REMOVED, false)+"\n"
+"REPLACING: "+intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)
);
}
}
,並在你的清單中添加像這樣(裏面你<應用>標籤):
<receiver android:name="TestReciver" >
<intent-filter >
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
當你使用一個接收器這樣你不調用任何註冊或註銷所以它永遠會準備好獲取數據。
需要注意的是,如果您讓用戶將您的應用程序移動到SD卡上,則此功能無效。如果SD卡卸載時發送事件,接收器將無法訪問,您將錯過該事件。
這個註冊的接收者如果註冊在當前已暫停的活動內的清單中,是否能夠訪問其封閉活動的私有變量? – Peterdk
不要緊,我現在看到Receiver類不是一個接口,而是一個你需要繼承的類。 – Peterdk
@chris,我沒有看到這個文檔在android文檔中。 –