gpt4 book ai didi

android - 从相机返回结果时也会调用 onCreate 方法

转载 作者:太空狗 更新时间:2023-10-29 14:29:40 25 4
gpt4 key购买 nike

我正在制作一个可以从相机拍摄照片并将其加载到 ImageView 中的应用程序。现在我的问题是当我打开相机,拍照并返回到我的应用程序时,然后在调用onActivityResult之后,也会调用onCreate方法。

这个问题出现在三星的模型中。当我在 HTC Wildfire 上运行这段代码时,一切正常。在 HTC Wildfire 中,调用 onActivityResult,然后调用 onResume。所以我想做什么在 HTC Wildfire 中可以实现,但在 Samsung S 中则不行。

这是我的代码,

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

Drawable drawable = null;
System.out.println("Faces Fond"+facesFound);
System.out.println("On Activity Result is called");
switch (requestCode) {

case Constants.PICK_IMAGE:
switch(resultCode)
{
case RESULT_CANCELED:
break;
case RESULT_OK:
dragLayer.removeAllViews();
isFaceDetected = false;
resetArray();
numberOfViews = 0;
if(data!=null){
uriOfImage = data.getData();
System.out.println("Uri is "+ uriOfImage);
if(bitmapForDragLayer != null)
bitmapForDragLayer.recycle();
try {
bitmapForDragLayer = BitmapFactory.decodeStream(getContentResolver().openInputStream(uriOfImage));
bitmapForDragLayer = Bitmap.createScaledBitmap(bitmapForDragLayer, widthOfBitmap, heightOfBitmap, true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
drawable = new BitmapDrawable(bitmapForDragLayer);
dragLayer.setBackgroundDrawable(drawable);
isImageLoaded = false;
}
break;
}
break;

case Constants.TAKE_PICTURE_CODE:
switch(resultCode)
{
case RESULT_CANCELED:
break;
case RESULT_OK:
dragLayer.removeAllViews();
isFaceDetected = false;
resetArray();
numberOfViews = 0;
System.out.println("Value of data"+data);
if(data!=null){
bitmapForDragLayer = (Bitmap)data.getExtras().get("data");
bitmapForDragLayer = Bitmap.createScaledBitmap(bitmapForDragLayer, widthOfBitmap, heightOfBitmap, true);
drawable = new BitmapDrawable(bitmapForDragLayer);
dragLayer.setBackgroundDrawable(drawable);
isImageLoaded = false;
}
break;
}
break;

case Constants.FRAME_SELECT_CODE:
currentFrame = frameSelection.getFrameBitmap(resultCode);
currentSelectedBitmapVO.setSelectedBitmap(selectedFrame);
selectedFrame = currentFrame;
for(int i=0;i<array.size();i++)
{
System.out.println("value of i"+i);
if(array.get(i))
{
int height = currentBitmapVO[i].getSelectedBitmapHeight();
int width = currentBitmapVO[i].getSelectedBitmapWidth();
Bitmap b = Bitmap.createScaledBitmap(currentFrame, width, height, true);
selectedFrame = b;
imageView[i].setImageBitmap(selectedFrame);
imageView[i].invalidate();
}
}
break;
}
}

下面是调用Camera拍照的代码。

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, Constants.TAKE_PICTURE_CODE);

相同的代码在 HTC 中运行良好,但在三星中却不行。

最佳答案

可能是你的app在拍照的时候因为内存不足被系统kill掉了。然后 Activity 生命周期将再次从 onCreate()

开始

关于android - 从相机返回结果时也会调用 onCreate 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com