powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / java.lang.OutOfMemoryError
7 сообщений из 7, страница 1 из 1
java.lang.OutOfMemoryError
    #39376860
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложении осуществляется загрузка в ImageView картинок из папки Assets. Картинки в формате .PNG. При работе приложения возникает ошибка OutOfMemoryError.

загрузку картинок делаю так
Код: java
1.
2.
3.
4.
        image1=(ImageView) result.findViewById(R.id.imageView);
        image1.setImageBitmap(decodeSampledBitmapFromResource(getActivity(), filename, 100, 130));
        image1.setTag(filename);
        image1.setOnClickListener(this);


с учетом https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

лог с ошибкой вот
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:492)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:558)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState
at android.support.v4.app.FragmentManagerImpl.moveToState
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions
at android.support.v4.app.FragmentPagerAdapter.finishUpdate
at android.support.v4.view.ViewPager.populate(ViewPager.java:1105)
at android.support.v4.view.ViewPager.populate(ViewPager.java:951)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:250)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)

есть ли еще способы как решить проблему? или возможно дело в том, что на устройстве мало памяти.
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39376884
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут http://stackoverflow.com/questions/25719620/how-to-solve-java-lang-outofmemoryerror-trouble-in-android
нашел способ, в манифесте проставить android:largeHeap="true", но там же не советуют этого делать.

хотя даже добавление android:largeHeap="true" не помогло. Похоже дело действительно в нехватки памяти на устройстве.

Можно как-то отловить данную ошибку и закрыть приложение аккуратно без креша )
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39376951
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загрузчик может на ходу их ресамплировать https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Вроде уже обсуждали тут.
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39376967
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
в первом посте я же сослался на эту статью.
что значит "на ходу"?
"обсуждали тут", где?
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39376982
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompчто значит "на ходу"?
Не читал, значит?
авторTo avoid java.lang.OutOfMemory exceptions, check the dimensions of a bitmap before decoding it, unless you absolutely trust the source to provide you with predictably sized image data that comfortably fits within the available memory.
nikomp"обсуждали тут", где?
В разделе. Кто-то тут еще большими картинками баловался.
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39376993
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот 18603238
...
Рейтинг: 0 / 0
java.lang.OutOfMemoryError
    #39377440
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечитал еще раз материал по ссылкам. Внес правки в приложение:
1) Картинки подобрал меньшего размера. Были картинки по несколько метров, память в моем стареньком телефоне забивалась на раз.
2) Сменил FragmentPagerAdapter на FragmentStatePagerAdapter. FragmentPagerAdapter хранит все количество используемых фрагментов в памяти и поэтому подходит, если в приложении небольшое количество страниц. А класс FragmentStatePagerAdapter хранит в памяти только текущую, предыдущую и следующую страницу (при их наличии). За счет этого он экономнее расходует память, но в то же время работает чуть медленнее.

После этого приложение работает нормально.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / java.lang.OutOfMemoryError
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]