Android: Sincronização de encadeamento nativo com encadeamento principal

No meu aplicativo android eu tenho um retorno de chamada de um segmento nativo em código Java que precisa ser sincronizado com o thread principal da interface do usuário. A intenção é que o thread da interface do usuário exiba uma lista de opções com base nas informações retornadas do thread nativo. Até que o usuário selecione uma opção, o segmento nativo precisa ser bloqueado. Depois que o usuário seleciona uma opção, o encadeamento nativo lê o valor e continua em execução.

Eu tentei implementar esta solução usando um ConditionVariable no entanto eu recebo um erro de VM com o comentário indicando "Fatal spin-on-suspend, dumping threads".

Parece que não é possível usar um objeto de sincronização baseado em Java para sincronizar esses encadeamentos. O código funciona perfeitamente no caso em que eu tenho dois encadeamentos Java.

Em geral, há alguma maneira de usar um objeto de sincronização baseado em Java para sincronizar um encadeamento Java e nativo ou isso precisa ser implementado usando o NDK com uma chamada do encadeamento Java para uma função NDK que implementa a sincronização?

questionAnswers(1)

yourAnswerToTheQuestion