JNI中每个tick的活动实例更改

时间:2015-07-14 11:59:35

标签: java android c++ android-activity java-native-interface

我有一个Android生命周期问题,我无法在其他任何地方找到答案。

(这不是关于使活动类成为全局参考的问题)

我正在使用标准的JNI-> Native Init()和Tick()调用来在本机端运行游戏。与San Angeles演示非常相似。

我将这两个调用都传递给Java Activity对象的一个​​实例。这是我可以回电话 到Java,以便(例如,关闭广告,与Java Twitter交互等)。

Q1:当我调用Tick()来调用我的本机调用时,这是否会创建一个新线程,如果是这样,为什么我不必从本机端调用DetachCurrentThread?

Q2:我尝试在Native Init()函数上缓存Activity实例并将其存储在静态中。这适用于某些设备,但在Android 5.0之前的设备上,当我在Tick()函数中使用该实例时,我得到一个陈旧的引用JNI错误。将我的OnLoad()函数中的活动'class'作为全局“引用”进行排序吗?

问题3:当用户关闭插页式广告时,我在Java端获得回调,我将其传递给本机端(例如,重新启动音乐)。这会创建一个新的Native线程吗?我之前缓存的Activity实例是否仍然有效?

非常感谢,

史蒂夫。

1 个答案:

答案 0 :(得分:0)

好的找到了我自己的答案。

1.No。 是的,做GlobalReference的事情。 3.No,但Java方面是一个新线程。