2012-04-16 25 views
6

Tôi nhận được java.lang.OutOfMemoryError khi sử dụng bitmap để hiển thị hình ảnh lớn.
Để thay đổi kích thước bitmap, tôi đã giới thiệu liên kết sau Save Bitmap and BitmapFactory.decodeFile.Android: Cách giải quyết bitmap java.lang.OutOfMemoryError?

logcat của tôi là như sau:

FATAL EXCEPTION: main 
java.lang.OutOfMemoryError 
    at  android.graphics.Bitmap.nativeCreate(Native Method) 
    at  android.graphics.Bitmap.createBitmap(Bitmap.java:604) 
    at  android.graphics.Bitmap.createBitmap(Bitmap.java:551) 
    at  com.android.restaurant.DescriptionPage.getResizedBitmap(DescriptionPage.java:327) 
    at   com.android.restaurant.DescriptionPage.setDetailsIntoLayout(DescriptionPage.java:172) 
    at com.android.restaurant.DescriptionPage.onCreate(DescriptionPage.java:101) 
    at android.app.Activity.performCreate(Activity.java:4397) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834) 
    at android.app.ActivityThread.access$500(ActivityThread.java:125) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:132) 
    at android.app.ActivityThread.main(ActivityThread.java:4135) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:491) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
    at dalvik.system.NativeStart.main(Native Method) 
+1

Có hoặc một cái gì đó sai với mã của bạn, hoặc điện thoại không có đủ bộ nhớ. Dù bằng cách nào, chúng tôi không thể giúp bạn, ít nhất là cho đến khi bạn đăng mã của mình. – Hassan

+0

@ Raman-Mystry - vui lòng tham khảo bài viết "Hiển thị bitmap hiệu quả" bên dưới. Nếu bạn vẫn gặp sự cố, vui lòng 1) đăng mã có liên quan, 2) cho chúng tôi biết điều gì đó về bitmap của bạn (như mức độ lớn trong h/w và kích hoạt!), 3) cho chúng tôi biết bộ nhớ của bạn có bao nhiêu bộ nhớ cố gắng để tải bitmap – paulsm4

+1

[Thử] [1] [1]: http://stackoverflow.com/questions/10081008/outofmemoryerror-in-game-with-many-small-images/10086141 # comment12999643_10086141 Nó thực sự sẽ giúp ích cho bạn. –

Trả lời

5

Vì bạn đã không được đăng mã của bạn rất khó để biết liệu có một lỗi hoặc có thể đang không hiệu quả có thể được cải thiện.

Nhưng nhìn chung bộ nhớ JVM bị giới hạn, vì vậy việc tải hình ảnh lớn có thể gây ra OutOfMemoryError. Bạn có thể thử tăng bộ nhớ JVM bằng cách sử dụng tùy chọn -Xmx. Đây là cách đầu tiên và đơn giản nhất.

Cách khác là giảm hình ảnh của bạn (nếu có thể). Hoặc có thể sử dụng định dạng khác với BMP (ví dụ: JPG). Nó đảm bảo chất lượng tốt và đòi hỏi ít bộ nhớ hơn.

0

Thách thức trong việc phát triển ứng dụng di động là bạn có bộ nhớ hạn chế.

Điều đầu tiên bị mắc kẹt trong tâm trí của tôi là cố gắng sử dụng PNG (đồ họa mạng di động) thay vì các bitmap (nếu có thể).

Ngoài ra, Dường như vấn đề này là hiện có, hãy kiểm tra này: - http://code.google.com/p/android/issues/detail?id=8488

Các vấn đề liên quan