调用startActivityOnResult()会自动调用当前活动的onPause(),onStop()和onDestroy()方法

时间:2012-03-16 10:06:12

标签: android android-activity

我通过调用startActivityForResult()开始另一个活动,按下后退按钮后,我调用了之前的活动onCreate方法,因此重新创建了整个活动。

在调试时,我发现调用startActivityOnResult()会自动调用

onPause()
onStop()
onDestroy()

当前活动的方法。这是正常的行为,因为我已经读过它只启动另一个活动的onPause()方法。

这是我的代码:

    @Override
public void onResume() {
    super.onResume();
}

@Override
public void onPause() {
    super.onPause();

}

@Override
public void onStop() {
    super.onStop();

}

@Override
public void onDestroy() {
    super.onDestroy();
}


public void showScore(View view) {
    Intent i = new Intent(StartMultipleChoiceActivity.this, ScoreActivity.class);
    i.putExtra("blockPosition", blockPosition);
    int itemVisited=submittedAnswers.size();
    i.putExtra("itemVisited", itemVisited);
    int itemCorrect=correctAnswers.size();
    i.putExtra("itemCorrect", itemCorrect);
    startActivityForResult(i,1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
}

2 个答案:

答案 0 :(得分:3)

onPause()onStop()完全正常。只要您的活动不再具有前景输入(onPause())且不再可见(onStop()),就会调用这些内容。

onDestroy()只有在你以某种方式自己完成活动时才会被调用,或者如果你在一个单独的应用程序中启动一个活动,Android需要终止你自己的应用程序以释放RAM。

答案 1 :(得分:0)

我有下一个问题。我通过删除标志 FLAG_ACTIVITY_NEW_TASK

解决了这个问题