gpt4 book ai didi

android 从 sd 卡加载图像到 imageview 在三星 SIII 中创建内存不足错误

转载 作者:行者123 更新时间:2023-11-29 18:06:55 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个选项可以显示 SD 卡中的图像,用户可以从中选择一个图像,它将加载到我下一个 Activity 的 ImageView 中。

我已经在我的两台设备(例如 Samsung Ace 和 Samsung Galaxy S3)上测试了该应用。

在 Samsung Ace 2.3 版本中,我可以选择图像并从 onActivity 结果中调用下一个 Activity 并将图像加载到 Imageview 中,在这里我可以执行此操作 n 次,(其他选项我使用的是通过相机捕捉并加载到下一个 Activity 中,这里的过程也很好)

当我在 Samsung Galaxy S3 4.2 版中尝试相同的过程时,我第一次能够通过相机选择或捕捉并将其加载到 ImageView 中。当我第二次尝试时,应用程序崩溃了,说

E/dalvikvm-heap( 7058): Out of memory on a 31961104-byte allocation.
E/AndroidRuntime( 7058): FATAL EXCEPTION: main
E/AndroidRuntime( 7058): java.lang.OutOfMemoryError
E/AndroidRuntime( 7058): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
E/AndroidRuntime( 7058): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
E/AndroidRuntime( 7058): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:389)
E/AndroidRuntime( 7058): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:418)
E/AndroidRuntime( 7058): at com.tribal.pages.app.UploadPhoto$ShowCapturedImage.onPostExecute(UploadPhoto.java:442)
E/AndroidRuntime( 7058): at com.tribal.pages.app.UploadPhoto$ShowCapturedImage.onPostExecute(UploadPhoto.java:1)
E/AndroidRuntime( 7058): at android.os.AsyncTask.finish(AsyncTask.java:602)
E/AndroidRuntime( 7058): at android.os.AsyncTask.access$600(AsyncTask.java:156)
E/AndroidRuntime( 7058): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
E/AndroidRuntime( 7058): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 7058): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 7058): at android.app.ActivityThread.main(ActivityThread.java:4517)
E/AndroidRuntime( 7058): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 7058): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 7058): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
E/AndroidRuntime( 7058): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
E/AndroidRuntime( 7058): at dalvik.system.NativeStart.main(Native Method)
E/android.os.Debug( 2098): !@Dumpstate > dumpstate -k -t -n -z -d -o /data/log/dumpstate_app_error
E/widget ( 2468): [MSC_HERO_Accu]>>> SM:399 [0:0] IR : false, IPR : false
E/Launcher( 2468): Error finding setting, default accessibility to not found: accessibility_enabled
E/widget ( 2468): [MSC_HERO_Accu]>>> SM:399 [0:0] IR : false, IPR : false

我尝试使用以下两种方法在 ImageView 中加载捕获的图像或选定的图像方法一

Bitmap  bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(Appconstants._uri));
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
ImageView uplaod_image.setImageBitmap(bitmap);

方法二

Bitmap bitmap = BitmapFactory.decodeFile(Appconstants.f);
ImageView uplaod_image.setImageBitmap(bitmap);

但每次应用程序崩溃时都会出现上述错误,如何解决......

最佳答案

您看到的行为差异可能是由于两部手机上的图像大小不同所致。

你可能想打电话,

upload_image.setImageDrawable(null);

在尝试加载另一个图像之前清除 imageView(或使用详述的方法之一 here ),以便垃圾收集器在后续分配之前清理和收集该内存并防止 Out内存错误。

关于android 从 sd 卡加载图像到 imageview 在三星 SIII 中创建内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971719/

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