Сервис в Android: Parcelable ArrayList между сервисом и активностью через уведомление - PullRequest
0 голосов
/ 27 марта 2012

Я отправляю из Сервиса уведомление, в котором содержится Parcelable ArrayList.

//my service code
Intent intent = new Intent(mContext, AutoSearchActivity.class);

//In this list, there is 3 elements
intent.putParcelableArrayListExtra(Staff.JSON_ARRAY,staffs);

PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent , 0);

Notification notification = new Notification(
    R.drawable.toplogo, 
    (String) getResources().getString(R.string.notification),
    System.currentTimeMillis());

String titleNotification = (String) getResources().getString(R.string.notification_title);

String textNotification = (String) getResources().getString(R.string.notification_content);

notification.setLatestEventInfo(mContext, titleNotification,textNotification, pendingIntent);

notification.vibrate = new long[] { 0, 400, 100, 400, 100, 600 };

notificationManager.notify(ID_NOTIFICATION, notification);

После нажатия на моё уведомление выполняется AutoSearchActivity. Я пытаюсь поймать данные и отобразить их, но отображаются только старые данные. Я предполагаю, что есть какая-то система кеша, но я не знаю, как ее удалить.

//in my AutoSearchActivity
Bundle bundle = getIntent().getExtras();

//only 1 element !!!
ArrayList<SiteStaff> listAppInfo = bundle.getParcelableArrayList(Staff.JSON_ARRAY);

Спасибо за помощь!

1 Ответ

4 голосов
/ 27 марта 2012

Да, Pending Intent кэшируется, создает много проблем.Измените свою строку на PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent , PendingIntent.FLAG_UPDATE_CURRENT);, чтобы ожидающее намерение принять единственное последнее значение, даже если оно срабатывает несколько раз.

...