0

ここで非常に奇妙なこと。

私は当初、スタートアップアクティビティ(アクティビティA)であるアクティビティを持っていました。タグがandroid:launchMode="singleTask"関連付けられていました。問題はありません。要件が変更され、アクティビティBをスタートアップアクティビティにしています。インテントフィルターをコピーし、名前を「.ActivityB」に変更し、起動モードタグも移動しました。

うまくいくようです。アプリを起動すると、アクティビティBに移動します。ただし、アクティビティBからアクティビティAに移動し、[戻る]ボタンをクリックすると、アプリが終了して再開しません(起動モードタグがない場合は再開します)。 )。

もう一つの例。アクティビティAからアクティビティB、アクティビティA、アクティビティBに移動すると、すべて問題ありません。クリックして戻ると(予想どおり)アクティビティAに移動しますが、もう一度クリックするとアクティビティAの前のインスタンスに移動し(ええと)、もう一度クリックしてアプリを終了します。どちらの場合もアクティビティBをスキップします。

私は明らかに何かを見落としていますが、何がわからないのです。戻るボタンの機能を上書きすることはなく、起動アクティビティを切り替える前にすべてが完全に機能しました。

編集 以下は、変更前のマニフェストからの抜粋です

<activity android:name=".ActivityA" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="ActivityB"></activity>

これが変更後の抜粋です

<activity android:name=".ActivityB" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="ActivityA"></activity>
4

1 に答える 1

1

アクティビティBがfinish()呼び出されているようです。、、、にいくつかのログステートメントOnCreateを挿入することをお勧めします。これによりOnPause、アクティビティBの存続期間を監視できます。これはハイランダーアクティビティ(1つのみ)であるため、複数のインスタンスが作成されることを心配する必要はありません。また、そこにいくつかのロギング呼び出しを調べて/オーバーライドして配置することもできます。OnResumeOnDestroyonNewIntent

finish()本当の答えではありませんが、アクティビティAを開始した後、またはアクティビティBがバックグラウンドで実行され、それを忘れたときに、ドーナツにお金を払って電話をかけます。

そうでない場合は、アクティビティBがいつどのように終了するかに興味があります。通常、Androidに戻ったときにエラーが発生して停止した場合、Androidはあなたに吠えますが、あなたが言及しなかったので、そうではないと思います。

于 2012-07-17T03:44:25.953 に答える