Android принудительно закрывает приложение на определенном изображении. Как я могу отследить проблему?

Я пытаюсь отобразить 2 изображения на холсте. Я загрузил один, и он работает нормально. Второй я создал, загрузил и показываю таким же образом, но приложение каждый раз закрывается.

Оба изображения имеют формат PNG и находятся в формате res/drawable-mdpi.

Загрузка изображений:

private Bitmap stageBMP=BitmapFactory.decodeResource(getResources(), R.drawable.stagel);
private Bitmap magBMP = BitmapFactory.decodeResource(getResources(), R.drawable.mag);

Отображение изображений:

canvas.drawBitmap(stageL, 300,300, null);
canvas.drawBitmap(magBMP, 300,300, null);

Если я закомментирую последнюю строку, приложение загрузится (отображает только первое изображение). Вместо того, чтобы отображать magBMP, я дважды показываю stageL, это работает.

Рабочий образ:

Рабочий образ

Несовместимое изображение:

Несовместимое изображение

Трассировки стека:

10-17 19:23:03.233: DEBUG/RobotronActivity(746): View added
10-17 19:23:03.403: DEBUG/MainThread(746): Starting game loop
10-17 19:23:03.543: WARN/dalvikvm(746): threadid=9: thread exiting with uncaught exception (group=0x40014760)
10-17 19:23:03.543: ERROR/AndroidRuntime(746): FATAL EXCEPTION: Thread-10
10-17 19:23:03.543: ERROR/AndroidRuntime(746): java.lang.NullPointerException
10-17 19:23:03.543: ERROR/AndroidRuntime(746):     at android.graphics.Canvas.throwIfRecycled(Canvas.java:999)
10-17 19:23:03.543: ERROR/AndroidRuntime(746):     at android.graphics.Canvas.drawBitmap(Canvas.java:1040)
10-17 19:23:03.543: ERROR/AndroidRuntime(746):     at com.cjs.robotron.Droid.draw(Droid.java:28)
10-17 19:23:03.543: ERROR/AndroidRuntime(746):     at com.cjs.robotron.MainGamePanel.onDraw(MainGamePanel.java:108)
10-17 19:23:03.543: ERROR/AndroidRuntime(746):     at com.cjs.robotron.MainThread.run(MainThread.java:52)
10-17 19:23:03.566: WARN/ActivityManager(73):   Force finishing activity com.cjs.robotron/.RobotronActivity
10-17 19:23:03.566: WARN/WindowManager(73): Failure taking screenshot for (216x135) to layer 21020
10-17 19:23:04.073: WARN/ActivityManager(73): Activity pause timeout for ActivityRecord{407afbf0 com.cjs.robotron/.RobotronActivity}
10-17 19:23:04.213: WARN/InputManagerService(73): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@406a7738 (uid=10036 pid=746)
10-17 19:23:04.223: WARN/InputManagerService(73): Client not active, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40eefcf8
10-17 19:23:04.913: INFO/ActivityManager(73): Displayed com.cjs.robotron/.RobotronActivity: +3s510ms
10-17 19:23:10.893: DEBUG/dalvikvm(221): GC_EXPLICIT freed 18K, 5% free 6274K/6599K, paused 3ms+3ms
10-17 19:23:14.797: WARN/ActivityManager(73): Activity destroy timeout for ActivityRecord{407afbf0 com.cjs.robotron/.RobotronActivity}
10-17 19:23:15.973: DEBUG/dalvikvm(325): GC_EXPLICIT freed 8K, 6% free 6198K/6531K, paused 3ms+3ms

person zotty    schedule 17.10.2011    source источник
comment
Когда ваше приложение дает сбой, оно создает трассировку стека, которую вы можете получить из Logcat, можете ли вы опубликовать ее здесь?   -  person slayton    schedule 17.10.2011
comment
Добавил трассировку стека, спасибо за форматирование, Шон :)   -  person zotty    schedule 17.10.2011
comment
Да похоже та же проблема! К сожалению, и он остался без ответа.   -  person zotty    schedule 17.10.2011


Ответы (1)


Хорошо, мне удалось найти решение.

Вместо того, чтобы загружать изображения в один класс и передавать их другому для отображения, я передал контекст второму классу, загрузил их и отобразил там.

Признаюсь, я не совсем понимаю, почему это должно работать, но для лоскутного решения пока сойдет.

person zotty    schedule 17.10.2011