Android的 - 内存不足的错误。当它运行在真实的设备 [英] Android - Out of memory Error. When it run on real device

查看:370
本文介绍了Android的 - 内存不足的错误。当它运行在真实的设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个图片库的应用程序,而我试图从外部Storage.My应用程序映像可以在Android模拟器,但在实际设备(HTC ONEX)我得到了一些异常运行。

I have an image gallery application, and I'm trying to get image from External Storage.My application can run on android emulator but on real device(HTC OneX) I got some exception.

我在这里的登录猫。

07-25 17:17:49.027:E / dalvikvm堆(3008):内存在480016字节分配。   07-25 17:17:49.052:E / dalvikvm(3008):内存:堆大小= 65571KB,分配= 63717KB,限= 65536KB   07-25 17:17:49.052:E / dalvikvm(3008):额外的信息:足迹= 65315KB,允许的排放量= 65571KB,裁剪= 0KB   07-25 17:17:49.052:E / MediaStore(3008):未能分配内存的缩略图内容://媒体/外部/图像/缩略图/ 300; java.lang.OutOfMemoryError:(堆大小= 65571KB,分配= 63717KB)   07-25 17:17:49.142:E / dalvikvm堆(3008):内存在480016字节分配。   07-25 17:17:49.152:E / dalvikvm(3008):内存:堆大小= 65571KB,分配= 63718KB,限= 65536KB   07-25 17:17:49.152:E / dalvikvm(3008):额外的信息:足迹= 65315KB,允许的排放量= 65571KB,裁剪= 0KB   07-25 17:17:49.152:E / MediaStore(3008):未能分配内存的缩略图内容://媒体/外部/图像/缩略图/ 300; java.lang.OutOfMemoryError:(堆大小= 65571KB,分配= 63718KB)   07-25 17:17:49.302:E / dalvikvm堆(3008):内存在480016字节分配。   07-25 17:17:49.317:E / dalvikvm(3008):内存:堆大小= 65571KB,分配= 63749KB,限= 65536KB   07-25 17:17:49.317:E / dalvikvm(3008):额外的信息:足迹= 65315KB,允许的排放量= 65571KB,裁剪= 0KB   07-25 17:17:49.327:E / AndroidRuntime(3008):致命异常:AsyncTask的#1   07-25 17:17:49.327:E / AndroidRuntime(3008):java.lang.RuntimeException的:一个错误而执行doInBackground发生()   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.os.AsyncTask $ 3.done(AsyncTask.java:299)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.FutureTask.run(FutureTask.java:137)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.os.AsyncTask $ SerialExecutor $ 1.运行(AsyncTask.java:230)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.lang.Thread.run(Thread.java:864)   07-25 17:17:49.327:E / AndroidRuntime(3008):java.lang.OutOfMemoryError:产生的原因(堆大小= 65571KB,分配= 63749KB)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.graphics.BitmapFactory.nativeDe codeByteArray(本机方法)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.graphics.BitmapFactory.de codeByteArray(BitmapFactory.java:552)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.media.ThumbnailUtils.createThumbnailFromEXIF(ThumbnailUtils.java:515)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.media.ThumbnailUtils.createImageThumbnail(ThumbnailUtils.java:102)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.provider.MediaStore $ InternalThumbnails.getThumbnail(MediaStore.java:626)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.provider.MediaStore $图片$ Thumbnails.getThumbnail(MediaStore.java:987)   07-25 17:17:49.327:E / AndroidRuntime(3008):在com.mimi.ngsbusproject.GalleryActivity.Gallery(GalleryActivity.java:92)   07-25 17:17:49.327:E / AndroidRuntime(3008):在com.mimi.ngsbusproject.GalleryActivity.access $ 1(GalleryActivity.java:74)   07-25 17:17:49.327:E / AndroidRuntime(3008):在com.mimi.ngsbusproject.GalleryActivity $ LoadGallery.doInBackground(GalleryActivity.java:58)   07-25 17:17:49.327:E / AndroidRuntime(3008):在com.mimi.ngsbusproject.GalleryActivity $ LoadGallery.doInBackground(GalleryActivity.java:1)   07-25 17:17:49.327:E / AndroidRuntime(3008):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)   07-25 17:17:49.327:E / AndroidRuntime(3008):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)   07-25 17:17:49.327:E / AndroidRuntime(3008):... 5个   07-25 17:17:50.062:E /窗口管理器(3008):活动com.mimi.ngsbusproject.GalleryActivity渗漏最初此处添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@41ac90a8   07-25 17:17:50.062:E /窗口管理器(3008):android.view.WindowLeaked:活动com.mimi.ngsbusproject.GalleryActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@41ac90a8这是原本在这里添加   07-25 17:17:50.062:E /窗口管理器(3008):在android.view.ViewRootImpl(ViewRootImpl.java:465)   07-25 17:17:50.062:E /窗口管理器(3008):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:419)   07-25 17:17:50.062:E /窗口管理器(3008):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:351)   07-25 17:17:50.062:E /窗口管理器(3008):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:171)   07-25 17:17:50.062:E /窗口管理器(3008):在android.view.Window $ LocalWindowManager.addView(Window.java:558)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.Dialog.show(Dialog.java:282)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ProgressDialog.show(ProgressDialog.java:116)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ProgressDialog.show(ProgressDialog.java:99)   07-25 17:17:50.062:E /窗口管理器(3008):在com.mimi.ngsbusproject.GalleryActivity $ LoadGallery.on preExecute(GalleryActivity.java:51)   07-25 17:17:50.062:E /窗口管理器(3008):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)   07-25 17:17:50.062:E /窗口管理器(3008):在android.os.AsyncTask.execute(AsyncTask.java:534)   07-25 17:17:50.062:E /窗口管理器(3008):在com.mimi.ngsbusproject.GalleryActivity.onCreate(GalleryActivity.java:43)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.Activity.performCreate(Activity.java:5066)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ActivityThread.access $ 600(ActivityThread.java:151)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1331)   07-25 17:17:50.062:E /窗口管理器(3008):在android.os.Handler.dispatchMessage(Handler.java:99)   07-25 17:17:50.062:E /窗口管理器(3008):在android.os.Looper.loop(Looper.java:155)   07-25 17:17:50.062:E /窗口管理器(3008):在android.app.ActivityThread.main(ActivityThread.java:5485)   07-25 17:17:50.062:E /窗口管理器(3008):在java.lang.reflect.Method.invokeNative(本机方法)   07-25 17:17:50.062:E /窗口管理器(3008):在java.lang.reflect.Method.invoke(Method.java:511)   07-25 17:17:50.062:E /窗口管理器(3008):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1028)   07-25 17:17:50.062:E /窗口管理器(3008):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)   07-25 17:17:50.062:E /窗口管理器(3008):在dalvik.system.NativeStart.main(本机方法)   07-25 17:17:50.962:E / dalvikvm堆(3008):内存在2264368字节分配。   07-25 17:17:50.967:E / dalvikvm(3008):内存:堆大小= 65571KB,分配= 63787KB,限= 65536KB   07-25 17:17:50.967:E / dalvikvm(3008):额外的信息:足迹= 65315KB,允许的排放量= 65571KB,裁剪= 0KB   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):坠毁在同一个进程:主   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):java.lang.OutOfMemoryError:(堆大小= 65571KB,分配= 63787KB)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:626)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:473)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在android.graphics.BitmapFactory.de codeResource(BitmapFactory.java:502)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在com.mimi.ngsbusproject.LuancherActivity.de codeSampledBitmapFromResource(LuancherActivity.java:147)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在com.mimi.ngsbusproject.LuancherActivity.AnimateandSlideShow(LuancherActivity.java:113)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在com.mimi.ngsbusproject.LuancherActivity.access $ 0(LuancherActivity.java:106)   07-25 17:17:50.967:E / AndroidRuntime_2_crash(3008):在com.mimi.ngsbusproject.LuancherActivity $ 2.运行(LuancherActivity.java:84)

07-25 17:17:49.027: E/dalvikvm-heap(3008): Out of memory on a 480016-byte allocation. 07-25 17:17:49.052: E/dalvikvm(3008): Out of memory: Heap Size=65571KB, Allocated=63717KB, Limit=65536KB 07-25 17:17:49.052: E/dalvikvm(3008): Extra info: Footprint=65315KB, Allowed Footprint=65571KB, Trimmed=0KB 07-25 17:17:49.052: E/MediaStore(3008): failed to allocate memory for thumbnail content://media/external/images/thumbnails/300; java.lang.OutOfMemoryError: (Heap Size=65571KB, Allocated=63717KB) 07-25 17:17:49.142: E/dalvikvm-heap(3008): Out of memory on a 480016-byte allocation. 07-25 17:17:49.152: E/dalvikvm(3008): Out of memory: Heap Size=65571KB, Allocated=63718KB, Limit=65536KB 07-25 17:17:49.152: E/dalvikvm(3008): Extra info: Footprint=65315KB, Allowed Footprint=65571KB, Trimmed=0KB 07-25 17:17:49.152: E/MediaStore(3008): failed to allocate memory for thumbnail content://media/external/images/thumbnails/300; java.lang.OutOfMemoryError: (Heap Size=65571KB, Allocated=63718KB) 07-25 17:17:49.302: E/dalvikvm-heap(3008): Out of memory on a 480016-byte allocation. 07-25 17:17:49.317: E/dalvikvm(3008): Out of memory: Heap Size=65571KB, Allocated=63749KB, Limit=65536KB 07-25 17:17:49.317: E/dalvikvm(3008): Extra info: Footprint=65315KB, Allowed Footprint=65571KB, Trimmed=0KB 07-25 17:17:49.327: E/AndroidRuntime(3008): FATAL EXCEPTION: AsyncTask #1 07-25 17:17:49.327: E/AndroidRuntime(3008): java.lang.RuntimeException: An error occured while executing doInBackground() 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.os.AsyncTask$3.done(AsyncTask.java:299) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.lang.Thread.run(Thread.java:864) 07-25 17:17:49.327: E/AndroidRuntime(3008): Caused by: java.lang.OutOfMemoryError: (Heap Size=65571KB, Allocated=63749KB) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:552) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.media.ThumbnailUtils.createThumbnailFromEXIF(ThumbnailUtils.java:515) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.media.ThumbnailUtils.createImageThumbnail(ThumbnailUtils.java:102) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.provider.MediaStore$InternalThumbnails.getThumbnail(MediaStore.java:626) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.provider.MediaStore$Images$Thumbnails.getThumbnail(MediaStore.java:987) 07-25 17:17:49.327: E/AndroidRuntime(3008): at com.mimi.ngsbusproject.GalleryActivity.Gallery(GalleryActivity.java:92) 07-25 17:17:49.327: E/AndroidRuntime(3008): at com.mimi.ngsbusproject.GalleryActivity.access$1(GalleryActivity.java:74) 07-25 17:17:49.327: E/AndroidRuntime(3008): at com.mimi.ngsbusproject.GalleryActivity$LoadGallery.doInBackground(GalleryActivity.java:58) 07-25 17:17:49.327: E/AndroidRuntime(3008): at com.mimi.ngsbusproject.GalleryActivity$LoadGallery.doInBackground(GalleryActivity.java:1) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.os.AsyncTask$2.call(AsyncTask.java:287) 07-25 17:17:49.327: E/AndroidRuntime(3008): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-25 17:17:49.327: E/AndroidRuntime(3008): ... 5 more 07-25 17:17:50.062: E/WindowManager(3008): Activity com.mimi.ngsbusproject.GalleryActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41ac90a8 that was originally added here 07-25 17:17:50.062: E/WindowManager(3008): android.view.WindowLeaked: Activity com.mimi.ngsbusproject.GalleryActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41ac90a8 that was originally added here 07-25 17:17:50.062: E/WindowManager(3008): at android.view.ViewRootImpl.(ViewRootImpl.java:465) 07-25 17:17:50.062: E/WindowManager(3008): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:419) 07-25 17:17:50.062: E/WindowManager(3008): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:351) 07-25 17:17:50.062: E/WindowManager(3008): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:171) 07-25 17:17:50.062: E/WindowManager(3008): at android.view.Window$LocalWindowManager.addView(Window.java:558) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.Dialog.show(Dialog.java:282) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ProgressDialog.show(ProgressDialog.java:116) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ProgressDialog.show(ProgressDialog.java:99) 07-25 17:17:50.062: E/WindowManager(3008): at com.mimi.ngsbusproject.GalleryActivity$LoadGallery.onPreExecute(GalleryActivity.java:51) 07-25 17:17:50.062: E/WindowManager(3008): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 07-25 17:17:50.062: E/WindowManager(3008): at android.os.AsyncTask.execute(AsyncTask.java:534) 07-25 17:17:50.062: E/WindowManager(3008): at com.mimi.ngsbusproject.GalleryActivity.onCreate(GalleryActivity.java:43) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.Activity.performCreate(Activity.java:5066) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ActivityThread.access$600(ActivityThread.java:151) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) 07-25 17:17:50.062: E/WindowManager(3008): at android.os.Handler.dispatchMessage(Handler.java:99) 07-25 17:17:50.062: E/WindowManager(3008): at android.os.Looper.loop(Looper.java:155) 07-25 17:17:50.062: E/WindowManager(3008): at android.app.ActivityThread.main(ActivityThread.java:5485) 07-25 17:17:50.062: E/WindowManager(3008): at java.lang.reflect.Method.invokeNative(Native Method) 07-25 17:17:50.062: E/WindowManager(3008): at java.lang.reflect.Method.invoke(Method.java:511) 07-25 17:17:50.062: E/WindowManager(3008): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 07-25 17:17:50.062: E/WindowManager(3008): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) 07-25 17:17:50.062: E/WindowManager(3008): at dalvik.system.NativeStart.main(Native Method) 07-25 17:17:50.962: E/dalvikvm-heap(3008): Out of memory on a 2264368-byte allocation. 07-25 17:17:50.967: E/dalvikvm(3008): Out of memory: Heap Size=65571KB, Allocated=63787KB, Limit=65536KB 07-25 17:17:50.967: E/dalvikvm(3008): Extra info: Footprint=65315KB, Allowed Footprint=65571KB, Trimmed=0KB 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): crash in the same process: main 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): java.lang.OutOfMemoryError: (Heap Size=65571KB, Allocated=63787KB) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:626) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:473) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:502) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at com.mimi.ngsbusproject.LuancherActivity.decodeSampledBitmapFromResource(LuancherActivity.java:147) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at com.mimi.ngsbusproject.LuancherActivity.AnimateandSlideShow(LuancherActivity.java:113) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at com.mimi.ngsbusproject.LuancherActivity.access$0(LuancherActivity.java:106) 07-25 17:17:50.967: E/AndroidRuntime_2_crash(3008): at com.mimi.ngsbusproject.LuancherActivity$2.run(LuancherActivity.java:84)

和我的code在这里。

And My code here.

final String[] columns = { MediaStore.Images.Media.DATA,
            MediaStore.Images.Media._ID };
    Cursor image_cursor;
    image_cursor = managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, null);
    int image_column_index = image_cursor
            .getColumnIndex(MediaStore.Images.Media._ID);
    count = image_cursor.getCount();
    thumbnails = new Bitmap[count];
    arrPath = new String[count];
    try {
        for (int i = 0; i < count; i++) {
            image_cursor.moveToPosition(i);
            int id = image_cursor.getInt(image_column_index);
            int dataColumnIndex = image_cursor
                    .getColumnIndex(MediaStore.Images.Media.DATA);
            thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
                    getApplicationContext().getContentResolver(), id,
                    MediaStore.Images.Thumbnails.MINI_KIND, null);
            arrPath[i] = image_cursor.getString(dataColumnIndex);

        }
    } catch (Exception e) {
        e.printStackTrace();
    }

对不起,我的语言。谢谢你。

Sorry for my language. Thanks.

推荐答案

您部分:

count = image_cursor.getCount();
thumbnails = new Bitmap[count];

可能会导致此。为了创建位图的内存高效你应该使用BitmapOptions

May cause this. For creating Bitmaps memory-efficient you should use BitmapOptions

尝试:该来代替:

Bitmap bm;
bm = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(filepath),100, 100, true);
mPicture = new ImageView(context);
mPicture.setImageBitmap(bm);

请参阅 <一href="http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object">Strange内存不足的问题,同时加载图像为位图对象

好像这两个日志可以给你提示:

Seems like these both logs may give you the hint:

未能分配内存的缩略图   内容://媒体/外部/图像/缩略图/ 300;

failed to allocate memory for thumbnail content://media/external/images/thumbnails/300;

android.graphics.BitmapFactory.nativeDe codeByteArray(本机方法)   07-25 17:17:49.327:E / AndroidRuntime(3008):在   android.graphics.BitmapFactory.de codeByteArray(BitmapFactory.java:552)   07-25 17:17:49.327:E / AndroidRuntime(3008):在   android.media.ThumbnailUtils.createThumbnailFromEXIF

android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:552) 07-25 17:17:49.327: E/AndroidRuntime(3008): at android.media.ThumbnailUtils.createThumbnailFromEXIF

请问您的画廊中含有大量的大图? 在这种情况下,你没有你的光标问题但你的内存管理,当谈到位图!

Does your gallery contain a lot of big pictures? In this case you dont have a problem with your Cursor but with your memory management when it comes to bitmaps!

此外,你应该有这个权限在你的清单:

Furthermore you should have this permission in your manifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

另请参见

<一个href="http://developer.android.com/training/displaying-bitmaps/load-bitmap.html">http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

这篇关于Android的 - 内存不足的错误。当它运行在真实的设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆