5

私は3つの活動をしています:ホーム(基本活動)と

 <activity
        android:launchMode="singleTop"
        android:name="com.Home"
        android:label="@string/app_name"

        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

他の2つのアクティビティ:Activity1とActivity2

テーマ付きandroid:theme="@android:style/Theme.Translucent" は、お互いから、または自宅から呼び出すことができます。

彼らは常にホームに戻りますonBackpress()それはオーバーライドされます

intent.setClass(this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

activity1がactivity2から呼び出されたとき

intent.setClass(this, ACtivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

そのonResumeが呼び出されましたが、表示されません解決策はありますか?

スタック内のActivityのインスタンスを1つだけにしたい。

要件: 一度作成されたActivity1とActivity2は、Homeが呼び出されるまで破棄されないようにする必要があります(常に履歴から呼び出される必要があります)。

手伝ってください。前もって感謝します。

これも訪れました

4

2 に答える 2

2

ホーム アクティビティに FLAG_ACTIVITY_CLEAR_TOP を使用しているため、問題が発生していると思われます。

として、それは実行します

呼び出されたアクティビティ タイプのインスタンスがスタックに既に存在する場合、新しいインスタンスを作成する代わりに、このインスタンスがフォアグラウンドに移動されます。また、そのインスタンスの上にあるスタック内のすべてのアクティビティがスタックからクリアされます。たとえば、現在のアクティビティ スタックが ABCDE であるとすると、タイプ C のアクティビティを起動すると、タスクからアクティビティ D と E がクリアされ、スタック ABC になります。

したがって、ホーム アクティビティを呼び出すと、アクティビティ 1 とアクティビティ 2 がクリアされます。

解決 :

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED または FLAG_ACTIVITY_REORDER_TO_FRONT を使用した Call Home アクティビティ

AS、それは実行します

インテントが新しいタスクを作成するか、既存のタスクをフォアグラウンドに移動しない限り、このフラグは効果がありません。その場合、タスクはリセットされます。つまり、タスク アフィニティが適用され (その結果、アクティビティがこのタスクから、またはこのタスクに移動されます)、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET も設定されている場合、そのフラグの仕様に従ってタスクがクリアされます。

于 2013-03-14T10:19:15.067 に答える
0

あなたのマニフェストで与える

android:launchMode="singleinstance";
于 2013-03-14T09:57:06.227 に答える