このタイプの質問がいくつかあることは知っていますが、すべて試してみましたが、それでも機能しません。
はい、私のアプリです。アクティビティがあります。このアクティビティには4つのタブがあり、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は私の意図でした。なぜなら、私はその番号をさらに処理するからです。
このようにコンパイルして通知をクリックすると、最初のタブに新しいタブアクティビティが開きます。そのときクリックすると、多くのエラーが発生します(データベースはまだ開いている、nullpointersなど)。新しいタブアクティビティが開始され、もう1つはまだ開いているので、'gpsリスナーがまだ機能していることがわかります。
だから、私が欲しいのは、次のことができるということです。アプリを開き、タブアクティビティに移動し、タブ4を開き、[レコード]をクリックします。そのときクリックすると、アプリが非表示になります。ホームボタンをクリックするだけでも表示されます。しかし、通知があります。それをクリックすると、非表示のアクティビティが再び表示されるはずです。それで、私がそこで間違っていることは何ですか?フラグFLAG_ACTIVITY_CLEAR_TOPとFLAG_ACTIVITY_SINGLE_TOPで問題が解決するはずだと思いましたか?