4

アイテムのリストを含む FragmentActivity があり、アプリがバックグラウンドにあるときに、そのアイテム リストへのプッシュが発生する可能性があります。

これが発生した場合、ステータスバー通知を作成して、更新についてユーザーに警告したいと考えています。
ユーザーが通知をクリックすると、アクティビティはリストの一番下に新しいアイテムを表示しながら、前面に並べ替えて画面に表示する必要があります。

そのため、ユーザーのデバイスでそれを示す通知マネージャーを作成します。

private static void createNotification(String title, String text,
    String largeIcon, String itemdId, Context mCOntext) {

Bitmap ic = BitmapFactory.decodeResource(mContext.getResources(),
    R.drawable.ic_launcher);
Intent intent = new Intent(mContext, MyFragmentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra(MyFragmentActivity.SELECTED_ITEM_LIST_ID, DatabaseHelper
    .getItemListById(listId).getId());
PendingIntent pIntent = PendingIntent.getActivity(mContext, 0, intent,
    0);

Notification noti = new NotificationCompat.Builder(mContext)
    .setContentTitle(title).setContentText(text)
    .setSmallIcon(R.drawable.ic_launcher).setContentIntent(pIntent)
    .setAutoCancel(true).setLargeIcon(ic).build();
noti.defaults |= Notification.DEFAULT_LIGHTS;
noti.defaults |= Notification.DEFAULT_VIBRATE;
noti.sound = Uri.parse("android.resource://"
    + mContext.getPackageName() + "/" + R.raw.user_gets_message);

NotificationManager nm = (NotificationManager) mContext
    .getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(0, noti);
}

唯一の問題は、フラグを無視するように見えることです。フラグメント アクティビティに移動し、ホーム画面に移動して (アプリをバックグラウンドに)、プッシュを取得すると、通知をクリックすると、アプリが新しいアクティビティ (またはフラグメント) を表示し、新しいデータを含む元のアクティビティではなく、新しいアクティビティを示します。(つまり、戻るボタンをクリックすると、履歴スタックから同じアクティビティ (またはフラグメント) が開きます。

onNewIntentアクティビティの およびすべてのライフサイクル メソッドをオーバーライドしたところ、戻るをクリックすると、呼び出されるメソッドはMyFragmentActivity.onStartおよび であることがわかりましたMyFragmentActivity.onResume

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

7

問題は、フラグFLAG_ACTIVITY_BROUGHT_TO_FRONTをインテントに追加するアクティビティ起動モードを singleTask に設定すると、フラグ FLAG_ACTIVITY_REORDER_TO_FRONT が無視されることだと思います。

発射モードをシングルトップに変更する必要があります。

于 2013-02-05T08:30:54.887 に答える