У меня есть вопрос по жизненному циклу 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 все еще действительным?
Большое спасибо,
Стив.
Хорошо, нашел мои собственные ответы.
1.No.
2.Да, сделайте вещь GlobalReference.
3.Нет, но сторона Java — новый поток.