2015-09-10 88 views
0

我有廣播監聽器,它將監聽用戶發出的呼叫,並顯示持續時間和連接所花費的時間。 所以對於使用下面的聽衆廣播我做到了接近廣播接收器監聽器

<receiver android:name=".service.CallReceiveBroadcast" > 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

AndroidManifest.xml中

,另一個是註冊/註銷broadcastlistener編程

registerReceiver(callReceiveBroadcast, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL)); 
unregisterReceiver(callReceiveBroadcast); 

我的問題是

  1. Whi一個是好方法(可適用於所有其他廣播監聽器)。
  2. 哪種方法消耗更多電量(如果萬一它消耗!! :))。

請建議。

+0

使用第一種方法 –

回答

1

我認爲第一個更好,因爲這種方式代碼變得可重用。因爲每個使用代碼的開發人員都可以在清單中查看正在使用哪些意圖過濾器。如果你以編程的方式做到這一點,你需要在它周圍留下很多評論,以確保人們閱讀它。

而電池問題不會產生很大的差異,所以我只是選擇一個你喜歡的。

+0

是的。你是對的。第一種方法更好。與第二種方法一樣,您需要註冊和取消註冊接收方。這使得它有點複雜。 –

1

我對你的問題的答案將是:

  1. 最好的辦法是你需要的。

    a)如果您需要一直註冊到這兩個操作,那麼在Manifest文件中添加接收器是個不錯的選擇。

    B)如果你想聽聽這兩個消息僅當用戶打開例如特定的活動,那麼你應該去的第二個選項,你可以簡單地註冊和註銷,當您需要。

  2. 電池使用時間不受註冊動作的影響,但它受到您在onReceive中所做的操作的影響..所以如果您在onReceive中做了一些沉重的事情(而且您不應該),那麼當您使用清單註冊時,您的onReceive方法將比您僅在需要時註冊該事件時更多地被捕獲。但這取決於你想要達到的目標。