我有一個小部件,只是使用一個服務來更新小部件的RemoteViews的外觀。該服務基於由不同的已註冊BroadcastReceiver提供的過濾器啓動。當滿足其中一個條件時,我的BroadcastReceiver的onReceive()被調用,並開始我的服務。該服務運行,然後自行停止。這很適合一段時間。但是,過了一段時間,就好像BroadcastReceiver被殺了一樣。我在日誌中看到我的進程已經死亡,並且它在5000毫秒內重新啓動我的服務。這很好,但問題是我的BroadcastReceiver實際上是基於我的訂閱事件控制服務的啓動。沒有它,當這些事件發生時,我的服務不會啓動,例如用戶的屏幕開啓。任何想法爲什麼會發生?當unRegister()沒有被調用時,爲什麼BroadcastReceiver會停止接收事件?我不希望我的服務始終處於運行狀態。我懷疑如果我使用服務本身作爲BroadcastReceiver也會發生同樣的行爲。謝謝你的幫助。BroadcastReceiver Killed
@Override
public void onReceive(Context context, Intent intent)
{
try
{
Log.i(TAG, "Received Broadcast: " + intent.getAction());
Bundle bundle = intent.getExtras();
context.startService(new Intent(
com.mypkg.services.UpdateService.ACTION_UPDATE));
Log.i(TAG, "Service start complete.");
}
catch(Throwable t)
{
JLog.e(TAG, "An occurred during onReceive(): ", t);
}
}