2011-01-21 58 views
0

我已經創建了一個應該接收android.bluetooth.device.action.ACL_DISCONNECTED/ACL_CONNECTED事件的服務。服務將始終接收註冊的廣播操作?

我知道android中的服務可能會在android決定時重新啓動/停止。

不過,我想知道一個服務是否總是保證接收它註冊的事件,即使它已經被android殺死了?

我認爲這意味着android需要重新啓動一個殺死的服務,該服務已經註冊,以便在事件發生時偵聽事件。 以上假設是否正確?


非常感謝您的快速回復。

讓我給一些更多的信息,代碼樣本如下:

public class my_service extends Service { 

    @Override  
    public int onStartCommand(Intent intent, int flags, int startId) { 
     ... 
     IntentFilter filterDisconnected = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); 
this.registerReceiver(mReceiverDisconnected, filterDisconnected); 
     ... 
    } 


    private final BroadcastReceiver mReceiverDisconnected = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      ... 
     } 
    } 

    ... 
} 

所以用這個代碼的BroadcastReceiver在服務類中實現。

此代碼在正常cirmustances正常工作,但您是否說這是不正確的,並需要一個不同的類(BroadcastReceiver)?

如果以上是正確的,我想知道這個服務類是否因任何原因停止,當相關的事件引發時,類將被重新啓動,並且BroadcastReceiver將獲得事件。

+0

您創建了一個新註冊的賬號(我把它合併進這一個),請考慮註冊所以這不會再發生了。此外,答案是答案,而不是更新。謝謝。 – Will 2011-01-21 17:00:55

回答

4

大家好,我創建了一個應該接收android.bluetooth.device.action.ACL_DISCONNECTED/ACL_CONNECTED事件的服務。

這應該是不可能的。這些被記錄爲廣播行動;如果屬實,那麼他們只能被BroadcastReceiver接收。

但是,我想知道一個服務是否總是保證接收它註冊的事件,即使它已被殺死了android?

同樣,服務不應該直接「接收」這些事件。

但是,如果你創建一個BroadcastReceiver,並把它放在清單與<intent-filter>您所需的廣播,則該BroadcastReceiver是「保證收到它註冊的事件」,並認爲BroadcastReceiver可以調用startService()發送命令如果需要,可以設置爲IntentService