6

このサービスは永続Notificationを作成し、クリックでメイン アクティビティを開始しますPendingIntent。これがコードです。

Intent notificationIntent = new Intent(getApplicationContext(), ViewPagerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(StreamingService.this, 0, notificationIntent, 0);

ただし、通知を押したときにメインのアクティビティが開始されると、再び開始され、何度も...

最終的に、同じアクティビティが積み重なっていきます。これは、戻るボタンを押すことで確認できます。これにより、Main アクティビティが一度終了し、最後のアクティビティを閉じるまで同じアクティビティに戻ります。

どうすればこれを防ぐことができますか? PendingIntent照準アクティビティが実行されていることを検出して、同じアクティビティを再度作成せず、実行中のアクティビティを開始できますか?

PS。これをうまく説明できない場合は、申し訳ありません。その場合はお知らせください。問題を言い換えます。

4

3 に答える 3

7

私もこの解決策を見つけました。この属性をに追加しますManifest

           <activity android:name=".MyActivity"
              android:label="@string/app_name"
              android:launchMode="singleTop"      // <-- THIS LINE
            >

それぞれActivityにこの機能が必要です。これまでのところ、エラーはまったく発生していません。

どちらの解決策が良いですか?何もないとしても、私の方が簡単です。

于 2012-12-19T17:29:07.490 に答える
6

実装する正確な動作に応じて、次のフラグの1つをgetActivity()の最後のパラメーターとして渡すことができます。

于 2012-12-18T13:33:28.953 に答える
1

REQUEST_CODE で別の値を使用してみてください。REQUEST_CODE でデフォルト値 0 を使用しないでください。

または pendingIntent がアクティビティを再開します。

通常のアクティビティ サイクルを使用する場合は、PendingIntent の作成時にリクエスト値を入力します。

PendingIntent resultPendingIntent = PendingIntent.getActivity(
        context, REQUEST_CODE,
        resultIntent,
        PendingIntent.FLAG_UPDATE_CURRENT);
于 2016-05-10T09:34:49.603 に答える