Уведомление о возобновлении действия

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

9
задан Mr_and_Mrs_D 19 July 2013 в 05:21
поделиться