Autor Wątek: [Android] BitmapFactory.decodeResource OutOfMemoryError  (Przeczytany 1517 razy)

Offline Regis

  • Użytkownik

# Lipiec 14, 2015, 00:32:41
Witam, kolejny dziwny problem z Androidem ;)

Od początku testowałem aplikację głównie na Xperi S. Miałem 29 tekstur wszystko działało ok.

Zostawiłem to na kilka dni bo pisałem edytor poziomów na PC, po tym czasie odpaliłem znowu Android Studio, testuje bez żadnych zmian i dostaje:

07-13 23:23:43.422  25636-25657/com.example.lukasz.style E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 4083
    java.lang.OutOfMemoryError
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
            at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:376)
            at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:406)
            at com.example.lukasz.style.tekstury.loadTekstury(tekstury.java:191)
            at com.example.lukasz.style.AppRenderer.onSurfaceCreated(AppRenderer.java:857)
            at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1494)
            at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)


Niby wiadomo o co chodzi, ale przecież to wcześniej działało, teraz nie wywala się dopiero kiedy zostawiam sobie tylko 12 tekstur (wszystkie 512 na 512).

Na innych telefonach, na emulatorze, nawet na chińskim tablecie z 1GHz i 512 ramu dział normalnie. Na Xperii S działało i nagle przestało :O

Telefon resetowałem, przywróciłem ustawienia fabryczne, projekt w Android Studio zrobiłem od nowa, wciąż to samo.

Pliki tekstur raczej poprawne, wszystkie wymiary to potęgi dwójki, głównie 512x512 lub 256x256, png i jpg.

Telefon raczej nie stracił nagle większości pamięci :D Do tego jest totalnie wyczyszczony.


Ktoś ma jakiś pomysł co się mogło stać?
« Ostatnia zmiana: Lipiec 14, 2015, 00:34:12 wysłana przez Regis »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline RootKiller

  • Użytkownik

  • +3
# Lipiec 14, 2015, 11:19:47
Opierając swoją odpowiedź na - http://stackoverflow.com/questions/14359024/out-of-memory-error-while-loading-bitmaps

Dodaj
android:largeHeap="true"
do manifestu aplikacji.

Możesz też użyć > http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

Offline Regis

  • Użytkownik

# Lipiec 14, 2015, 16:08:42
Nie pomogło :(


Odgrzebałem jakieś backupy, instaluje stare APK, działa dobrze, odpalam projekt który z którego powstało to APK, daje Run i dostaje OutOfMemoryError, chyba że zmniejszę ilość tekstur :)

Jak to możliwe, że APK która powstała kiedyś z tego projektu działa, a jak chcę zbudować teraz to brakuje jej pamięci i się wywala? :D I to przy raptem 9MB tekstur licząc bez żadnej kompresji :D





Dobra, jednak pomogło :D Omyłkowo dodałem android:largeHeap="true" w taga activity, zamiast w application :D


Dzięki wielkie ;D



Chociaż wydaje mi się że nastąpił spadek fps :/
« Ostatnia zmiana: Lipiec 14, 2015, 18:45:22 wysłana przez Regis »