У меня есть виджет, который просто использует сервис для обновления внешнего вида RemoteViews виджета. Служба запускается на основе фильтров, предоставленных другим зарегистрированным BroadcastReceiver. Когда один из критериев удовлетворен, вызывается onReceive () моего BroadcastReceiver, и я запускаю свой сервис. Служба запускается, а затем останавливается. Это прекрасно работает некоторое время. Тем не менее, через некоторое время, как будто BroadcastReceiver убит. Я видел в журналах, где мой процесс умер, и он перезапускает мой сервис через 5000 мс. Это здорово, но проблема в том, что мой BroadcastReceiver - это то, что фактически управляет запуском сервиса на основе моих подписанных событий. Без этого мой сервис не запускается, когда происходят такие события, как, например, экран пользователя. Есть идеи, почему это произойдет? Почему BroadcastReceiver прекращает получать события, когда unRegister () не был вызван? Я не хочу, чтобы моя служба работала постоянно. Я подозреваю, что то же самое поведение произошло бы, если бы я использовал сам сервис как BroadcastReceiver. Спасибо за любую помощь.
@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);
}
}