Я знаю, есть несколько вопросов такого типа, но я перепробовал их все, и это все еще не работает.
Хорошо, для моего приложения; У меня есть активность. В этом действии есть 4 вкладки, а четвертая содержит список и кнопку записи. Когда я нажимаю запись, запускается GPS Listener. После получения нового значения 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 должны решить проблему?