Android — прикрепите прослушиватель кликов к RemoteViews

Предположим, я создал экземпляр RemoteViews, и он содержит два Button. Я хочу, чтобы когда пользователь нажимал эти кнопки, Service (или BroadcastReceiver или что-то еще) обрабатывал этот щелчок. Насколько мне известно, для достижения этой цели есть два пути:

  1. Назначьте этим кнопкам различные действия, например
    ACTION_BTNRemoteViewsCLICKED
    и
    ACTION_BTNButtonCLICKED
    , а затем получите действие в Сервисе через intent.getAction() и, наконец, сервис выполняет соответствующую задачу

  2. Поместите немного больше в объект Intent, который заключен через PendingIntent, например:

    intent.putStringExtra("which_button", "btn1"); // for Button 1
    и
    intent.putStringExtra("which_button", "btn2"); // for Button 2

    С другой стороны в Сервисе я могу различить этот сигнал через intent.getExtras().getString("which_button")

Теперь мой вопрос: какой подход лучше, по крайней мере, на практике? Спасибо


person frogatto    schedule 02.02.2014    source источник


Ответы (1)


Я не уверен, что вы можете утверждать, что одно лучше другого, но я думаю, что второе решение может быть более управляемым и расширяемым. Вы можете добавить Integer дополнительные идентификаторы, которые вы объявляете в классе R. Это гарантирует их уникальность и позволяет ссылаться на них в операторе switch. Это также означает, что ваш код маршрутизации находится в одном месте, поэтому, если там есть ошибка, ее будет легче найти.

person Tom    schedule 02.02.2014