1

私は次の2つの活動をしています(さらに、この質問ではもっと重要ではありません):

<activity android:name=".activities.HomeActivity" android:excludeFromRecents="true" />
<activity android:name=".activities.AdHocActivity" android:noHistory="true"/>  

HomeActivityは私が歴史を保持している最初のもので唯一のものです。ユーザーはホームとは別の場所に移動し、[戻る]をクリックしてメインのHomeActivityに戻ることができます。

私はまた、アラームで実行され、いくつかの特定のことをチェックするサービスを持っています。特定の基準が満たされたとき、私は自分のAdHocActivity

Intent i = new Intent(context, AdHocActivity.class);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.putExtra(BlockingActivity.INTENT_BLOCKED_PACKAGE_NAME, packageName);
                context.startActivity(i);

FLAG_ACTIVITY_NEW_TASKBroadcastReceiverからのアクティビティを表示するために必要でした

これで、このアドホックアクティビティはユーザーにメッセージを表示し、ユーザー元に戻すボタンがあります。HomeActivity

private void sendToMainApplication()
    {
        Intent i = new Intent(this, HomeActivity.class);
        startActivity(i);
        finish();
    }

これはすべて機能しますが、スタック内の2番目のインスタンスを取得HomeActivityします。したがって、ユーザーが[戻る]をタップすると、ホームアクティビティが点滅して戻ってきます(前のコピー)。

一番上に残したいのは1部だけです。アンカーのようにしたいと思います。存在しない場合は、新しいものを開いてほしい。

4

1 に答える 1

2

HomeActivityが2倍になるのを防ぐ秘訣は、次のように呼び出すことでした。

private void sendToMainApplication()
    {
        Intent i = new Intent(this, HomeActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        finish();
    }
于 2012-06-07T02:51:07.090 に答える