亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

啟用和禁用廣播接收器

啟用和禁用廣播接收器

滄海一幻覺 2019-10-16 14:54:56
我嘗試使用此PackageManager方法啟用和禁用廣播接收器:setComponentEnabledSetting(componentName,        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,        PackageManager.DONT_KILL_APP);廣播接收器已注冊在清單中。接收器工作正常,但是當我嘗試禁用它時,它仍然會接收廣播消息。當我通過“ android:enabled =“ false”“禁用清單中的接收器時,接收器未收到任何內容,但我無法啟用它。我從服務內部調用該方法。    PackageManager pm  = getApplicationContext().getPackageManager();    ComponentName componentName = new ComponentName("com.app",             ".broadcast_receivers.OnNetworkChangedReceiver");    pm.setComponentEnabledSetting(componentName,            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,            PackageManager.DONT_KILL_APP);Android清單:    <receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"                android:enabled="true">            <intent-filter>                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>            </intent-filter>    </receiver>收件人public class OnNetworkChangedReceiver extends BroadcastReceiver {private static final String TAG = "OnNetworkChangedReceiver";@Overridepublic void onReceive(Context context, Intent intent) {    Log.d(TAG, "in OnNetworkChanged");    }}我昨天也從一個Activity內部調用了該方法。我以為它有用,但是今天什么也沒有了??赡苁俏易蛱煺`解為禁用接收器的意圖(android.net.conn.CONNECTIVITY_CHANGE)有時會有很大的延遲嗎?PackageManager的方法是正確的方向還是該想法存在基本錯誤?非常感謝,Sven
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我認為使用PackageManager會過度考慮您的情況。您有一個BroadcastReceiver,有時需要忽略它正在收聽的廣播。我可以想到兩種簡單的方法:


1)設置一個標志,您的接收者可以檢查該標志以忽略或接受廣播,而不必擔心完全啟用/禁用它。


2)以編程方式(甚至可以是一個內部類)創建BroadcastReceiver,并在應用程序的給定部分根據需要注冊和注銷它。


總的來說,我發現用代碼而不是XML定義我的BroadcastReceivers可以提供更大的靈活性,并且通常更易于管理。


查看完整回答
反對 回復 2019-10-16
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

某些類型的廣播(例如BOOT_COMPLETED)無法通過進行有效注冊registerReceiver()。而且,過度依賴registerReceiver()會導致您獲得永久服務-僅用于維護接收方的服務-這很糟糕。禁用組件是提高效率的一個好主意,尤其是對于流行的系統廣播(例如)BOOT_COMPLETED。

查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 650 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號