BroadcastReceiver Killed - PullRequest
       4

BroadcastReceiver Killed

1 голос
/ 07 июня 2011

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

1 Ответ

1 голос
/ 07 июня 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...