BroadcastReceiver Killed

1

У меня есть виджет, который просто использует службу для обновления внешнего вида виджета 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);
    }
}
Теги:
broadcastreceiver

1 ответ

1

Ваше приложение терпит крах, вам нужно найти аварийный дамп в журналах, чтобы больше узнать об этом.

Вы можете сделать радиовещательный приемник невосприимчивым, не имея необходимости регистрироватьReceiver() в первую очередь - вместо того, чтобы запрограммировать декларацию приемника, объявите его в своем AndroidManifest вместе с соответствующим фильтром намерения, чтобы определить широковещательную (ые) трансляцию желающий получать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню