startActivityForResult不会返回到相同的Activity实例

时间:2015-10-12 05:59:56

标签: android android-activity camera

我正在使用以下代码从相机拍摄照片。我在startActivityForResult课程中对ACTION_IMAGE_CAPTURE意图使用CameraActivity。相机可以打开,可以拍照。但是当它回到CameraActivity时,它会进入CameraActivity的不同实例。我在这两种方法中打印hascode值,它给出了不同的值。我不明白为什么它会创建两个活动。有谁知道这个错误?

public class CameraActivity  extends Activity{

private ImageView imageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState == null) {
        setContentView(R.layout.fragment_imageview);
        imageView = (ImageView)findViewById(R.id.imageview);
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        System.out.println(this.hashCode());
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, 2);
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 2 && resultCode == RESULT_OK){
        System.out.println(this.hashCode());
        Bundle args = data.getExtras();
        Bitmap bitmap = (Bitmap)args.get("data");
        imageView.setImageBitmap(bitmap);

    }
   }
 }

1 个答案:

答案 0 :(得分:3)

系统可能会在相机应用程序运行时破坏您的活动。当相机应用程序启动时,您的应用程序处于后台,因此它有资格被销毁。您可以通过向onDestroy覆盖添加日志记录来测试它。