1

次のワークフローがあります。

  • startActivityForResult(Activity1)
  • Activity1 で呼び出される finish() (ボタンを押すとき)
  • onActivityResult() ==> startActivityForResult(Activity2)

===> Activity2.onCreate() は Activity1.onStop() の前に呼び出されます

なぜ私はそれを持っているのですか?

編集:

コードは次のとおりです。

1- MainActivity.java

    // On click on a button
    public void start(View view) {
        Intent activityIntent = new Intent(this, Activity2.class);
        startActivityForResult(activityIntent, 0);
    }

    protected void onActivityResult(int requestCode, 
            int resultCode, 
            Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

                Intent activityIntent = new Intent(this, Activity3.class);
                startActivityForResult(activityIntent, 0);
            }

2-Activity2.java

// A button to finish the activity
public void stop(View view) {
    finish();
}

@Override
protected void onStop() {
    super.onStop();
}

3-Activity3.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity3);
}
4

1 に答える 1

10

ライフサイクルのため。onStop は、Activity がビューから削除されるまで呼び出されません。したがって、この場合、onStop は、他の何かが user-activity2 からそれをブロックするまで呼び出されません。つまり、存在しない場合は別のアクティビティをブロックできないため、Activity2 が既に作成されている必要があります。

于 2013-02-15T16:10:09.457 に答える