22

Android 開発から、サンプル コードで簡単な通知を実装しますが、私のアプリでは、新しいインテントとアクティビティを再度作成する必要はなく、最後のアクティビティ (メディア プレーヤー UI です) に戻りたいだけです。サンプル コードを使用すると、新しいアクティビティが作成されます。

Intent resultIntent = new Intent(this, ResultActivity.class);

新しいインテントに関する関連コードにコメントし、通知を受け取りましたが、最後のアクティビティに戻る方法がわかりませんでした...

ホームキーを長押ししてからアプリに戻り、アプリをタッチしてもOKです。私が欲しいのは、この動作のようなものです。

bleow は Android Development のサンプル コードです。新しいインテント部分をコメントします。

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!");
/*Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ResultActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
    stackBuilder.getPendingIntent(
        0,
        PendingIntent.FLAG_UPDATE_CURRENT
    );
mBuilder.setContentIntent(resultPendingIntent);*/
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(mId, mBuilder.build());

[アップデート]

私は活動の意図とプロパティのフラグを設定する必要があると考えました。したがって、私が設定した活動に戻りたい

android:launchMode="singleInstance"

そして、インテントからの新しいアクティビティは必要ないので、最後のアクティビティが必要なだけなので、追加します

Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

ドキュメントから、Pendingintent.contentIntent を使用しFLAG_ACTIVITY_NEW_TASKフラグを含める必要があることがわかりました。このフラグを使用する場合、現在開始しているアクティビティに対してタスクが既に実行されている場合、新しいアクティビティは開始されません。代わりに、現在のタスクが最後にあった状態で画面の前面に表示されるだけです。

Intent.FLAG_ACTIVITY_NEW_TASK

しかし、logCat から、アクティビティに戻るための通知に触れると、pendingintent がまだ「生きている」最後のアクティビティを表示するのではなく、まだ onCreate() 関数を呼び出していることがわかりました。

4

5 に答える 5