Моя анимация с использованием Canvas зависает в течение определенного периода времени (от 10 до 36 часов) во время воспроизведения. Похоже, что вся система просто замерзла, если вы подключите ее к ПК или ноутбуку с помощью USB-кабеля, ничего не будет видно за пределами «неопознанного устройства». Мы могли только перезагрузить систему, чтобы «решить» замораживание.
Мне удалось вытащить оба файла traces.txt из папки data / anr /, но, к сожалению, я не настолько образован, чтобы читать оба из них, но поскольку обе программы зависают в одном и том же разделе кода, я думаю, это скорее моя программа, чем все остальное.
Система, на которой работает мое приложение, настроена Samsung. Если это звучит странно, я полагаю, что это может быть потому, что Samsung выпустила определенный SDK для своих чипов, и наш поставщик использовал его. Чип Samsung 4418. Сборка особенная, так как она частично включает в себя графическую часть и часть драйвера дисплея AOSP 5.1.1, а остальная часть кода AOSP использует версию 4.4.2 - так что версия сборки - 4.4.2 API lvl 19.
Ниже приведены следы "main" для обоих замораживаний:
Первый раз:
----- pid 12021 at 2019-03-19 22:05:10 -----
Cmd line: com.tsl.touch.navigator
JNI: CheckJNI is off; workarounds are off; pins=0; globals=264
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x2c3c6ca8 self=0x2c3b53c0
| sysTid=12021 nice=0 sched=0/0 cgrp=apps handle=716837204
| state=R schedstat=( 57574000000 93000000 1899 ) utm=5637 stm=120 core=1
#00 pc 00012224 /system/lib/libpng.so
#01 pc 000078bf /system/lib/libpng.so (png_read_row+678)
#02 pc 000079ff /system/lib/libpng.so (png_read_rows+46)
#03 pc 000eecc1 /system/lib/libskia.so (SkPNGImageDecoder::onDecode(SkStream*, SkBitmap*, SkImageDecoder::Mode)+546)
#04 pc 000eb0e1 /system/lib/libskia.so (SkImageDecoder::decode(SkStream*, SkBitmap*, SkBitmap::Config, SkImageDecoder::Mode)+36)
#05 pc 00075201 /system/lib/libandroid_runtime.so
#06 pc 00075375 /system/lib/libandroid_runtime.so
#07 pc 0001dbcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
#08 pc 0004e123 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#09 pc 00026fe0 /system/lib/libdvm.so
#10 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#11 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#12 pc 00060865 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
#13 pc 000687c7 /system/lib/libdvm.so
#14 pc 00026fe0 /system/lib/libdvm.so
#15 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#16 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#17 pc 00060581 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#18 pc 00049d0b /system/lib/libdvm.so
#19 pc 0004cde7 /system/lib/libandroid_runtime.so
#20 pc 0004db0b /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
#21 pc 0000105b /system/bin/app_process
#22 pc 0000e403 /system/lib/libc.so (__libc_init+50)
#23 pc 00000d7c /system/bin/app_process
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:445)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:475)
at com.tsl.touch.navigator.MainActivity.animation(MainActivity.java:369)
at com.tsl.touch.navigator.MainActivity.showAnimation(MainActivity.java:448)
at com.tsl.touch.navigator.MainActivity.parseDataAndPresent(MainActivity.java:653)
at com.tsl.touch.navigator.MainActivity.access$800(MainActivity.java:61)
at com.tsl.touch.navigator.MainActivity$NaviEventRunnable.run(MainActivity.java:1024)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Второй раз:
----- pid 759 at 2014-03-27 00:04:10 -----
Cmd line: com.tsl.touch.navigator
JNI: CheckJNI is off; workarounds are off; pins=0; globals=265
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 SUSPENDED
| group="main" sCount=1 dsCount=0 obj=0x2c010ca8 self=0x2bf4a3f8
| sysTid=759 nice=0 sched=0/0 cgrp=apps handle=716206420
| state=S schedstat=( 62555000000 300000000 3089 ) utm=6004 stm=250 core=0
#00 pc 000219bc /system/lib/libc.so (__futex_syscall3+8)
#01 pc 0000ef7c /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 0000efdc /system/lib/libc.so (__pthread_cond_timedwait+64)
#03 pc 000536b7 /system/lib/libdvm.so
#04 pc 00053c79 /system/lib/libdvm.so (dvmChangeStatus(Thread*, ThreadStatus)+34)
#05 pc 00038a41 /system/lib/libdvm.so
#06 pc 00039aa3 /system/lib/libdvm.so
#07 pc 0003b849 /system/lib/libdvm.so
#08 pc 00001f4b /system/lib/libnativehelper.so (jniGetNonMovableArrayElements+22)
#09 pc 00077ea9 /system/lib/libandroid_runtime.so (GraphicsJNI::allocateJavaPixelRef(_JNIEnv*, SkBitmap*, SkColorTable*)+44)
#10 pc 00077f23 /system/lib/libandroid_runtime.so (JavaPixelAllocator::allocPixelRef(SkBitmap*, SkColorTable*)+18)
#11 pc 0008f8f5 /system/lib/libskia.so (SkBitmap::allocPixels(SkBitmap::Allocator*, SkColorTable*)+28)
#12 pc 000eeb61 /system/lib/libskia.so (SkPNGImageDecoder::onDecode(SkStream*, SkBitmap*, SkImageDecoder::Mode)+194)
#13 pc 000eb0e1 /system/lib/libskia.so (SkImageDecoder::decode(SkStream*, SkBitmap*, SkBitmap::Config, SkImageDecoder::Mode)+36)
#14 pc 00075201 /system/lib/libandroid_runtime.so
#15 pc 00075375 /system/lib/libandroid_runtime.so
#16 pc 0001dbcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
#17 pc 0004e123 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#18 pc 00026fe0 /system/lib/libdvm.so
#19 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#20 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#21 pc 00060865 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
#22 pc 000687c7 /system/lib/libdvm.so
#23 pc 00026fe0 /system/lib/libdvm.so
#24 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#25 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#26 pc 00060581 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#27 pc 00049d0b /system/lib/libdvm.so
#28 pc 0004cde7 /system/lib/libandroid_runtime.so
#29 pc 0004db0b /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
#30 pc 0000105b /system/bin/app_process
#31 pc 0000e403 /system/lib/libc.so (__libc_init+50)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:445)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:475)
at com.tsl.touch.navigator.MainActivity.animation(MainActivity.java:379)
at com.tsl.touch.navigator.MainActivity.showAnimation(MainActivity.java:448)
at com.tsl.touch.navigator.MainActivity.parseDataAndPresent(MainActivity.java:653)
at com.tsl.touch.navigator.MainActivity.access$800(MainActivity.java:61)
at com.tsl.touch.navigator.MainActivity$NaviEventRunnable.run(MainActivity.java:1022)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Я хочу знать, какую подсказку можно извлечь из этих следов, и я хочу знать потенциальное решение для устранения сбоя / зависания.
Мое чувство кодера говорит мне, что оно как-то связано с управлением памятью, точнее, система, похоже, не смогла выделить память для декодирования растрового изображения.
Пожалуйста, помогите?