4

私がこれから尋ねようとしていることについていくつかの投稿があったことは知っていますが、正しい答えの投稿は見つかりません。

私の理解では、メインアクティビティ(Aと呼びましょう)のlaunchModeがsingleTaskに設定されていて、AがアクティビティBを開始した場合、ホームボタンをクリックすると履歴スタックが破棄され、アプリケーションを再起動するとAに戻ります。 Bではありません。

永続的な通知があり、ユーザーが通知をクリックするたびにメインアクティビティの複数のインスタンスを表示したくないため、launchModeをsingleTaskに設定しました。

私が両方に対応できるようにするために私が見逃しているものはありますか?

そのため、ユーザーが通知からアプリを起動したいときはいつでも、最後の(現在の)アクティビティに戻ることができるようにする方法があるかどうかを尋ねています。

launchModeをsingleTopに変更すると機能しますが、起動するたびにメインアクティビティの複数のインスタンスを取得します。

ありがとう

アンドレアス

4

4 に答える 4

3

アクティビティの複数のインスタンスを回避するために、次のコードを使用します

Intent intent=new Intent(this,RICO.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

マニフェストの変更は私には適切に見えません

于 2012-03-09T12:22:36.717 に答える
2

アプリ内のすべてのアクティビティに対してlaunchModeをsingleTopに設定してみましたか?私があなたのクエリから得たのは、メインアクティビティがsingleTopではないということです。そのため、通知アクティビティから起動されたアクティビティからメインアクティビティが起動されると、メインアクティビティの別のインスタンスが呼び出される可能性があります。

または、マニフェストでアプリケーションタグ自体の属性としてlaunchModeを指定できます。

于 2011-03-23T05:56:56.527 に答える
0

両方のアプローチで問題が発生しています。通知は、次の条件でのみ問題なく機能します。-メインアクティビティで戻るボタンを使用する(履歴にはそのアクティビティのみが含まれる)-ホームボタンを使用しない-呼び出しているアクティビティが最上位でアクティブな場合は通知を使用しない

それ以外の場合、通知は「new Intent(...)」を使用してフォアグラウンドでアクティビティを呼び出すことはできなくなります。

于 2012-07-20T10:08:16.583 に答える
0

必要なものを取得するためのマニフェストオプションとインテントのフラグの錬金術の組み合わせを見つけました:

Intent intent= new Intent(this, YaampActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

これらのオプションの使用

android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"

要素の内部。

これで、メインアクティビティを生成する通知が届きました(そのアクティビティがまだフォアグラウンドにない場合)。ホームボタンや戻るボタンを押してアクティビティを「閉じた」場合でも、その動作は正しいです。

于 2012-07-23T09:54:12.657 に答える