Прошу прощения за довольно расплывчатый вопрос, но у меня есть чисто родное приложение NDK, которое должно выполняться в режиме погружения (т. е. в полноэкранном режиме).
Фрагмент JNI иммерсивного режима выполняется, когда приложение возобновляется через APP_CMD_RESUME
. Это работает в большинстве случаев, но время от времени команда activity->vm->DetachCurrentThread()
в моем фрагменте SetImmersiveMode()
падает с фатальным исключением:
FATAL EXCEPTION: Thread-10
Process: com.toppluva.portis.LocalDebug, PID: 5474
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7380)
at android.view.ViewRootImpl.recomputeViewAttributes(ViewRootImpl.java:3478)
at android.view.View.setSystemUiVisibility(View.java:22587)
Меня это действительно смущает, в основном потому, что это происходит время от времени, как я могу определить, работаю ли я из этого исходного потока?
Обратите внимание, что согласно документации APP_CMD_RESUME
выполняется из основного потока.