Android 广播接收机侦听器

Android 广播接收机侦听器,android,broadcastreceiver,Android,Broadcastreceiver,我有一个广播侦听器,它将监听用户发出的呼出电话,并显示连接的持续时间和所需时间。 所以对于广播听众,我使用以下方法 <receiver android:name=".service.CallReceiveBroadcast" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> <action android

我有一个广播侦听器,它将监听用户发出的呼出电话,并显示连接的持续时间和所需时间。 所以对于广播听众,我使用以下方法

<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>
我的问题是

  • 哪一个是好的方法(可以适用于所有其他广播侦听器)
  • 哪种方法消耗更多的电池(如果它消耗!!:)

  • 请建议。

    我认为第一个更好,因为这样代码就可以重用。因为与您的代码一起工作的每个开发人员都可以在清单中查看正在使用的意图过滤器。如果你以编程的方式这样做,你需要在它周围放上大量的注释,以确保人们阅读它


    电池的问题不会有太大的区别,所以我会选择你喜欢的一个。

    我对你的问题的回答是:

  • 最好的方法就是你需要的方法

    a)如果您需要一直注册这两个操作,那么在清单文件中添加接收方是一个不错的选择

    b)如果您只想在用户打开特定活动时收听这两条消息,那么您应该选择第二个选项,因为您可以在需要时简单地注册和注销

  • 电池寿命不受注册操作的影响,而是受您在
    onReceive
    中所做操作的影响。。因此,如果您在
    onReceive
    中做了一些繁重的事情(您不应该这么做),那么当您使用清单注册时,您的onReceive方法将比仅在需要时才注册事件时被捕获更多。但这取决于你想要实现什么


  • 对你是对的。第一种方法更好。和第二种方法一样,您需要注册和注销接收方。这就有点复杂了。
    registerReceiver(callReceiveBroadcast, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL));
    unregisterReceiver(callReceiveBroadcast);