java — изменение активности за один тик в JNI

У меня есть вопрос по жизненному циклу Android, который я не могу найти где-либо еще.

(Это не вопрос о том, чтобы сделать класс деятельности глобальной ссылкой)

Я использую стандартные вызовы JNI-> Native Init () и Tick () для запуска игры на нативной стороне. Очень похоже на демонстрацию в Сан-Анджелесе.

Я передаю оба эти вызова экземпляру объекта Java Activity. Это так, я могу перезвонить
в Java, чтобы (например, отключить рекламу, взаимодействовать с Java Twitter и т. д.).

Q1: Когда я вызываю Tick () для вызова своих собственных вызовов, создает ли это новый поток, если так, то почему мне не нужно вызывать DetachCurrentThread с собственной стороны?

Q2: я пытался кэшировать экземпляр Activity в моей функции Native Init () и сохранять его в статическом виде. Это работает на некоторых устройствах, но на устройствах до Android 5.0 я получаю устаревшую справочную ошибку JNI при использовании экземпляра в функции Tick (). Сортирует ли это глобальную «ссылку», как я делаю для «класса» в моей функции OnLoad ()?

Q3: Когда пользователь закрывает промежуточную рекламу, я получаю обратный вызов на стороне Java, который я передаю нативной стороне (например, для перезапуска музыки). Создает ли это новую нативную тему? Будет ли мой ранее кэшированный экземпляр Activity все еще действительным?

Большое спасибо,

Стив.

0

Решение

Хорошо, нашел мои собственные ответы.

1.No.
2.Да, сделайте вещь GlobalReference.
3.Нет, но сторона Java — новый поток.

0

Другие решения