4

ここで言ったように

ユーザーがホーム ボタンを押してタスクを終了すると、現在のアクティビティは停止し、そのタスクはバックグラウンドに入ります。<...> ユーザーが後でタスクを開始したランチャー アイコンを選択してタスクを再開すると、タスクはフォアグラウンドに移動し、スタックの一番上でアクティビティを再開します。

だから私は簡単なテストを用意しました

アクティビティ #1 == onClick が設定されたテキスト マークとボタン

    public class FirstActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }

    public void onClick(View v)
    {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(intent);
    }
}

アクティビティ #2 == テキスト マークのみ

    public class SecondActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
    }
}

そしてマニフェスト

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10"/>
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="FirstActivity"
                  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="SecondActivity"
                  android:label="@string/app_name">
        </activity>

    </application>
</manifest>

ランチャー アイコンは最後のアクティビティを表示しません。常に最初のアクティビティを起動してスタックに入れます。そのため、1 つのタスクに多くの最初のアクティビティと多くの 2 番目のアクティビティが含まれる場合があります。最近のアプリ リストからのアイコンは、スタック内の正確な最後のアクティビティを起動します。私は何を間違っていますか?

4

2 に答える 2

1

アプリの起動方法によっては問題があります。これを試すときに IDE からアプリを起動する場合: オプション -> アプリケーションからアプリケーションを停止してください。次に、通常のユーザーと同じように、ホーム画面からアプリを起動します。この場合、バックスタックの動作は正常になると思います

于 2012-12-04T11:56:39.433 に答える
0

これを onCreate の最初のアクティビティに追加することをお勧めします。

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
    // Activity was brought to front and not created,
    // Thus finishing this will get us to the last viewed activity
    finish();
    return;
  }

  // Regular activity creation code...
} 

このスレッドの詳細: Android アプリ インストーラーおよびホーム画面からアプリケーションを起動するときのアクティビティ スタックの順序付けの問題

于 2013-10-30T23:52:59.230 に答える