【问题标题】:Calling startActivityOnResult() automatically calls onPause(), onStop() and onDestroy() methods of current activity调用 startActivityOnResult() 会自动调用当前活动的 onPause()、onStop() 和 onDestroy() 方法
【发布时间】:2013-12-02 21:13:41
【问题描述】:

我正在通过调用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);
}

【问题讨论】:

  • 它应该只调用 onpause() 和 onStop()。
  • 但它也在调用 onDestroy()
  • 为什么会调用 onDestroy()?有什么想法吗?
  • 你在哪里调用startActicityForResult() 在你调用startActivityForResult()的地方粘贴那个方法或一段代码..

标签: android android-activity


【解决方案1】:

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

onDestroy() 仅应在您以某种方式自己完成活动时调用,或者如果您在单独的应用程序中启动活动并且 Android 需要终止您自己的应用程序的进程以释放 RAM。

【讨论】:

  • 可能是由于内存不足,只有活动在模拟器上被破坏。我的应用程序的 Apk 文件大小为 30 MB,我无法将其上传到模拟器上,因为它显示错误内存不足。正如其中一篇博客所建议的那样,我手动分配了内存,然后只有这个问题出现了。应用在真机上完美运行
  • @Nishant:“可能是由于内存不足,只有活动在模拟器上被破坏”——单个活动不会因内存条件而被破坏。见commonsware.com/blog/2011/10/03/…
【解决方案2】:

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

解决了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多