Обновите пользовательский интерфейс вызывающего действия или начните новое действие, когда сигнал тревоги сработал из приемника вещания. - PullRequest
0 голосов
/ 24 апреля 2011

Я пишу код тревоги и использую приемник вещания.Я могу получить приемник вещания.но теперь я хочу вернуться к деятельности по вызову и обновить интерфейс своей деятельности.Я не в состоянии к этому.Я использовал следующий код в своей деятельности, но он никогда не выполняет этот код.

 private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "I am back!!", Toast.LENGTH_LONG).show();
    }
  };


  @Override
    protected void onPause()
    {
        super.onPause();
        unregisterReceiver(myBroadcastReceiver);
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        IntentFilter intentFilter = new IntentFilter("com.test.Main");
        registerReceiver(myBroadcastReceiver, intentFilter);
    }

в файле манифеста Я включил следующее, здесь gotAlarm - это файл приемника широковещания

   <receiver android:name=".gotAlarm"
        android:enabled="true">
        </receiver>

файл gotAlarm - это файл, который вызывается из ожидающего намерения набора тревог

public class gotAlarm extends BroadcastReceiver {
public void onReceive(Context context, Intent intent){
    Toast.makeText(context, "Wake Up!!", Toast.LENGTH_LONG).show();

   }
 }

Может быть, я упускаю что-то очень простое.пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 24 апреля 2011

Две вещи:

  1. Если вы динамически регистрируете получателя с помощью Context.registerReceiver (), вы не будете получать широковещательные сообщения, когда действие приостановлено (или остановлено или не запущено). Если вам нужно получать широковещательные сообщения даже тогда, когда активность приостановлена, создайте класс BroadcastReceiver верхнего уровня (в отличие от вашего внутреннего класса) и используйте <receiver> для его регистрации.

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

1 голос
/ 04 мая 2011

Я отбросил этот путь, и я начинаю новое действие при получении трансляции.И я отправляю информацию о звонках в трансляцию и из трансляции в следующую активность.Это послужило цели.

0 голосов
/ 24 апреля 2011

Вы зарегистрировали свой BroadcastReceiver (вы можете сделать это с помощью метода onResume вашей Деятельности)? Кроме того, вы должны отменить регистрацию BroadcastReceiver в методе 'onPause'.

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