应用程序在后台被杀死时的onActivityResult()

时间:2013-02-08 04:51:47

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

当我运行应用程序时,由于内存问题,活动被杀死。

我在我的活动中调用startActivityForResult()方法来启动摄像头。当调用活动在后台被杀死时,它显示异常行为。有些时候,在输入onRestoreInstance()之后,intent会返回onActivityResult()并返回结果。但在其他一些情况下,它在输入onRestoreInstance()后没有进入onActivityResult()。

任何人都可以解释一下为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码

运行新活动
        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