Хобрук: Ваш путь к мастерству в программировании

Приложение Andriod не работает на мобильном эмуляторе или устройстве, но работает на эмуляторе планшета.

Я пишу игру для устройств Android, и в настоящее время мое приложение успешно работает только на эмуляторе планшета. Когда я пытаюсь запустить приложение на эмуляторе телефона или подключить его к своему устройству, появляется сообщение «К сожалению, приложение остановлено». Ниже приводится ошибка, которую я получаю, когда пытаюсь запустить приложение на своем телефоне. Любая помощь будет оценена.

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: asdf.test, PID: 30171
              java.lang.OutOfMemoryError: Failed to allocate a 20071980 byte allocation with 2044256 free bytes and 1996KB until OOM
                  at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856)
                  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:675)
                  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2228)
                  at android.content.res.Resources.loadDrawableForCookie(Resources.java:4215)
                  at android.content.res.Resources.loadDrawable(Resources.java:4089)
                  at android.content.res.Resources.loadDrawable(Resources.java:3939)
                  at android.content.res.TypedArray.getDrawable(TypedArray.java:886)
                  at android.widget.ImageView.<init>(ImageView.java:157)
                  at android.widget.ImageView.<init>(ImageView.java:145)
                  at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:60)
                  at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
                  at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                  at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021)
                  at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080)
                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:758)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
                  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
                  at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:288)
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
                  at asdf.test.MainActivity.onCreate(MainActivity.java:61)
                  at android.app.Activity.performCreate(Activity.java:6876)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)
                  at android.app.ActivityThread.access$1100(ActivityThread.java:222)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:158)
                  at android.app.ActivityThread.main(ActivityThread.java:7237)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Ответы:


1

OutOfMemoryError - наиболее частая проблема, возникающая в Android, особенно при работе с Bitmaps(BitmapFactory,showing trace here). Эта ошибка выдается виртуальной машиной Java (JVM), когда объект не может быть выделен из-за нехватки места в памяти, а также сборщик мусора не может освободить некоторое пространство.

Вы можете добавить в свой манифест эти строки android:hardwareAccelerated="false", android:largeHeap="true" это работает в некоторых ситуациях.

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

Я думаю, вам следует прочитать некоторые из них на странице разработчиков Android, особенно здесь: Эффективное отображение растровых изображений < / а>

Прочтите все 5 уроков и снова перепишите свой код. Если по-прежнему не работает, мы будем рады узнать, что вы сделали не так с учебным материалом.

Вот некоторые из возможных ответов на этот тип ошибок в SOF

Android: BitmapFactory.decodeStream ( ) нехватка памяти с файлом 400 КБ со свободной кучей 2 МБ

Как решить проблему java.lang.OutOfMemoryError в Android

Android: java.lang.OutOfMemoryError

java.lang.OutOfMemoryError

Решение для OutOfMemoryError: растровое изображение размер превышает бюджет ВМ

06.01.2017
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..