Я знаю, что есть несколько вопросов этого типа, но я попробовал все это, и это все еще не работает.
Хорошо, для моего приложения;У меня есть активность.В этом упражнении есть 4 вкладки, а четвертая содержит список и кнопку записи.Когда я нажимаю кнопку записи, есть GPS-приемник, который запускается.Получив новое значение gps, он помещает его в список.
Пока это работает!
Если я нажму кнопку «Домой», она все равно будет работать, если я продолжаю удерживать ее нажатой.Он возобновляет действие с открытой вкладкой, а в списке по-прежнему содержатся элементы списка, а прослушиватель gps по-прежнему активен.
Это также отлично работает!
Теперь я хотел добавить уведомление, в котором отображается количество значений gps.списка как .number.При каждом новом сигнале GPS он обновляет значок уведомления новым номером.Это не проблема, но действие по нажатию на уведомление полностью испортило мое приложение.
Фактический код выглядит следующим образом:
public void callNotify(String text) {
notif = new Notification();
Intent contentIntent = new Intent(this, tabactivity.class);
contentIntent.putExtra("fid", this.specialvalue);
contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
notif.icon = R.drawable.icon;
notif.setLatestEventInfo(this, getString(R.string.app_name), text,
PendingIntent.getActivity(this.getBaseContext(), 0, contentIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
notif.ledARGB = Color.RED;
notif.ledOnMS = 200;
notif.ledOffMS = 200;
notif.flags = Notification.FLAG_SHOW_LIGHTS
| Notification.FLAG_ONGOING_EVENT
| Notification.FLAG_ONLY_ALERT_ONCE;
notif.number = notifyNumber;
mNotificationManager.notify(notifyNumber, notif);
}
public void updateNotify(String text) {
notifyNumber++;
notif.number = (int) (notifyNumber / 2);
Intent contentIntent = new Intent(this, tabactivity.class);
contentIntent.putExtra("fid", this.specialvalue);
contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
notif.setLatestEventInfo(this, getString(R.string.app_name), text,
PendingIntent.getActivity(this.getBaseContext(), 0, contentIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
mNotificationManager.cancel((notifyNumber - 2));
mNotificationManager.notify(notifyNumber, notif);
}
Итак, updateNotify () вызываетсяновый сигнал GPS.И callNotify () является первым, прежде чем он запускает прослушиватель GPS.И да, notifyNumber / 2 было моим намерением, потому что я продолжаю работать с этим номером.
Если я скомпилирую его таким образом и нажму на Уведомление, он откроет НОВУЮ вкладку на первой вкладке.Если я нажму назад, то получу много ошибок (база данных все еще открыта, нулевые указатели и прочее).Я думаю, потому что он запускает новую табачную активность, а другой все еще открыт, потому что я вижу, что слушатель gps все еще работает.
Итак, я хочу сделать следующее: я открываюмое приложение, перейдите на вкладку, откройте вкладку 4, нажмите запись.Если я нажму назад, оно должно скрыть приложение, если я просто нажму кнопку «Домой».Но есть уведомление.Если я нажму на него, он должен просто снова показать скрытую активность, вот и все.Итак, что я там делаю не так?Я думал, что флаги FLAG_ACTIVITY_CLEAR_TOP и FLAG_ACTIVITY_SINGLE_TOP должны решить проблему?