【问题标题】:onActivityResult() when the app gets killed in backgroundonActivityResult() 当应用程序在后台被杀死时
【发布时间】:2013-02-08 04:51:47
【问题描述】:

当我运行应用程序时,活动因内存问题而被终止。

我在我的活动中调用 startActivityForResult() 方法来启动相机。当调用活动在后台被杀死时,它显示出异常行为。有时,意图在输入 onRestoreInstance() 后返回到 onActivityResult() 并返回结果。但在某些其他情况下,它在输入 onRestoreInstance() 后没有输入 onActivityResult()。

谁能解释一下为什么会发生这种行为。

【问题讨论】:

  • 打印堆栈跟踪,以便其他人可以了解您的确切问题。

标签: android android-intent background android-activity kill


【解决方案1】:

您可以使用此代码运行您的新活动

        Intent i = new Intent(this, DatabaseEditor.class);
        //You may pass value on another activity
        i.putExtra("xCoordinate", String.valueOf(o));
        i.putExtra("yCoordinate", String.valueOf(p));
        i.putExtra("scale", scaleTest);

        startActivity(i);   

然后覆盖 onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {

        if (resultCode == RESULT_OK) {

            // Write your code on result ok return
        }
        if (resultCode == RESULT_CANCELED) {
            // Write your code on no result return
        }
    }
}

在您的新活动中,您可以使用此代码获取传递的值

    Bundle b = getIntent().getExtras();
    if (b != null) {
        editTextX.setText(String.valueOf(b.getString("xCoordinate")));
        editTextY.setText(String.valueOf(b.getString("yCoordinate")));
        editTextScale.setText(Float.toString(b.getFloat("scale")));
    }

如果你想回到之前的活动,只需调用finish();

 //if you want to pass a value from this activity to you mainActivity use this  
            Intent returnIntent = new Intent(
        "com.example.activity.MainActivity");
            returnIntent.putExtra("id", streetID.intValue());
            setResult(RESULT_OK, returnIntent);
            finish();

既然你设置了使用的 setResult(RESULT_OK, returnIntent);然后是你的代码

        if (resultCode == RESULT_OK) {

            // Write your code on result ok return
        }

被处决.. 干杯!!! :D

【讨论】:

  • 我正在调用意图打开相机捕捉视频。
  • in 取决于您传递的结果......确保在您的第二个意图终止之前传递了一个值 setResult(RESULT_OK, returnIntent);
  • 情况是,调用者活动中没有调用activityOnResult。
  • 您能否在您的代码中发布,以便我们对其进行分析...只是 onactivityresult 和您的第二个活动...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2011-06-06
  • 1970-01-01
相关资源
最近更新 更多