0

私のアプリでは、MainActivity からアクティビティ B に移動します。次に、HOME ボタンを押してから、アプリ アイコンをもう一度クリックして最大化します。

アクティビティ B を onResuming する代わりに、MainActivity に戻ります。

私の AndroidManifest.xml では、アイコンをクリックすると MainActivity を起動するために通常のインテント フィルターを使用しているため、これは理にかなっています。

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTask"
        android:label="MyApp"
        android:windowSoftInputMode="adjustPan">

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

    </activity>

Facebook や Twitter などの人気のあるアプリをチェックしていましたが、Facebook フィードから友達ページに移動して [ホーム] ボタンを押したときに、この問題が発生していないようです。次に、アプリのアイコンをもう一度クリックすると、まだ友達のページに表示されます。

これは、アプリのアイコンをクリックしたときにのみアプリに影響を与えるようです。たとえば、MainActivity からアクティビティ B に移動し、HOME ボタンを押してから SQUARE ボタンを押して、バックグラウンドで実行されているすべてのアプリを表示し、バックグラウンドにあるアプリを選択して再度最大化すると、アプリは正しくアクティビティに戻ります。 B.

アプリのアイコンをクリックしたときに、代わりにonResumesアクティビティ Bが表示されるようにするにはどうすればよいですか?

4

1 に答える 1

0

android:launchMode="singleTask"マニフェストから削除

Android launchMode docから、

「singleTask」および「singleInstance」アクティビティは、タスクのみを開始できます。それらは常にアクティビティ スタックのルートにあります。さらに、デバイスが一度に保持できるアクティビティのインスタンスは 1 つだけです。そのようなタスクは 1 つだけです。

Android バックスタック singleTask doc から、

システムは新しいタスクを作成し、新しいタスクのルートでアクティビティをインスタンス化します。ただし、アクティビティのインスタンスが別のタスクに既に存在する場合、システムは、新しいインスタンスを作成するのではなく、その onNewIntent() メソッドを呼び出すことによって、インテントを既存のインスタンスにルーティングします。一度に存在できるアクティビティのインスタンスは 1 つだけです。

注: アクティビティは新しいタスクで開始されますが、[戻る] ボタンをクリックすると、ユーザーは前のアクティビティに戻ります。

これがあなたを助けることを願っています。

于 2016-01-01T10:17:18.673 に答える