Я извиняюсь за то, что задаю довольно расплывчатый вопрос, но у меня есть чисто нативное приложение 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
выполняется из основного потока.