Отправить сообщение на носимое устройство из BroadcastReceiver в портативном приложении

Я хочу показывать только уведомление в носимом приложении в определенное время, указанное пользователем.

Для тестирования у меня есть BroadcastReceiver в приложении для портативных устройств, которое запускает службу и показывает уведомление в это время в как портативных, так и носимых устройствах. У меня также установлена ​​связь Message Api между портативными и носимыми модулями. Эти две части работают нормально.

Поэтому я не знаю, могу ли я отправить сообщение через Message Api, когда BroadcastReceiver запускается, чтобы показать уведомление только на носимом устройстве. Должен ли я запускать GoogleApiClient в методе onReceive()? Или есть другой способ сделать то, что я хочу?

Это мой BroadcastReceiver, но я хочу изменить его код:

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Intent service = new Intent(context, AlarmService.class);
        service.putExtra(AlarmService.INTENT_NOTIFY, true);
        service.putExtra("alarmID", intent.getIntExtra("alarmID", 0));
        context.startService(service);
    }
}

Спасибо!


person rgc92    schedule 11.11.2014    source источник


Ответы (1)


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

Похоже, что как только вы получите целевое время от пользователя, КПК больше не нужно будет задействовать, это правильно? Только носимое устройство что-то делает в заданное время, верно?

Если да, то я бы порекомендовал следующее:

  1. Как только пользователь портативного устройства укажет целевое время, используйте API обмена сообщениями, чтобы отправить это значение на носимое устройство.
  2. Когда носимое приложение получает целевую метку времени, носимое приложение использует AlarmManager для запуска трансляции в это время.
  3. Настройте BroadcastReceiver в носимом приложении, чтобы получать трансляцию AlarmManger.
  4. В BroadcastReceiver (в приложении для носимых устройств) создайте уведомление непосредственно на носимом устройстве.
person eshayne    schedule 14.11.2014
comment
Да, вы совершенно правы. Звучит как идеальный подход! Еще одна вещь: я хочу отправить две строки и временную метку на носимое устройство. Не лучше ли использовать Data Api и отправить эти три объекта внутри пакета? Большое спасибо за ваш ответ! - person rgc92; 14.11.2014
comment
Да, на самом деле, теперь, когда вы упомянули об этом, API данных, вероятно, был бы более подходящим. В частности, это облегчило бы носимому устройству получение запроса позже, если оно не было подключено в тот момент, когда пользователь задавал значения на наладоннике. - person eshayne; 14.11.2014