1

アプリに 2 つのアクティビティがあります。A アクティビティはランチャー アクティビティです。初めてアプリを実行すると、ランチャー アクティビティが実行されますが、ホーム ボタンを押してアプリ アイコンをクリックしてそこからアプリを再起動すると、常に B アクティビティが実行されます。
アプリの起動時にアクティビティ A が常に実行されるようにしたいと考えています。

これはマニフェスト コードです。

 <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:name="com.velosys.smsManager.Activities.a"
            android:launchMode="singleInstance"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.velosys.smsManager.Activities.b" />
</application>

使用android:launchMode="singleInstance"は私の目的を果たしますが、あるアクティビティから別のアクティビティへの移動が非常に遅くなります.`android:launchMode="singleInstance"のオプションを教えてください.

4

1 に答える 1

2

B アクティビティで onUserLeaveHint() メソッドをオーバーライドして (これにより、ホーム ボタンが押されたイベントが登録されます)、インテントを作成できます。

    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(startMain);

これは実際には理想的なソリューションではありません

編集:

ええ、最善の解決策は、B アクティビティの onPause() メソッド内で finish() を呼び出すことです

于 2012-12-13T10:03:42.677 に答える