Как обновить данные моего пакета в сервисе в Android? - PullRequest
3 голосов
/ 21 января 2012

Я собираюсь сделать простой будильник, у меня есть пользовательский интерфейс, и я использую Bundle для отправки пользовательских настроек (например, значения громкости или типа тона) для будильника. В основной деятельности у меня есть:

Bundle b = new Bundle();
b.putString("tone", toneS.getSelectedItem().toString()); 

И я отправляю его на BroadcastReceiver:

Intent intent = new Intent(SetAlarm.this, MessageReceiver.class);
            intent.putExtras(setBoundle());

И я получаю Bundle в BroadcastReceiver следующим образом:

Bundle b2 = new Bundle();
        b2 = intent.getExtras();

Он отлично работает в первый раз, но после него, хотя Bundle в основной деятельности имеет новые данные из пользовательского интерфейса, но BroadcastReceiver просто сохраняет старые данные.

Может кто-нибудь объяснить проблему?

Ответы [ 2 ]

4 голосов
/ 24 июля 2012

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

 pendingIntent = PendingIntent.getService(SettingsScreen.this, 0, myIntent, 0);

но если вы хотите обновить экземпляр PendingIntent и, таким образом, Bundle data, вы должны указать PendingIntent.FLAG_CANCEL_CURRENT или FLAG_UPDATE_CURRENT в качестве последнего параметра. Поэтому экземпляр PendingIndent будет: -

 pendingIntent = PendingIntent.getService(SettingsScreen.this, 0, myIntent, 
 PendingIntent.FLAG_CANCEL_CURRENT);

или

pendingIntent = PendingIntent.getService(SettingsScreen.this, 0, myIntent, 
PendingIntent.FLAG_UPDATE_CURRENT);

Это решило мою проблему. Надеюсь, это решит и вашу.

2 голосов
/ 21 января 2012

Всякий раз, когда я делал это, я делаю новый Пакет в конце отправки и помещаю строку в это.
Намерение на отправляющем конце можно использовать сколько угодно

Надеюсь, это поможет!

...