我想将JNI方法的进度更新为Progress Bar。在没有创建多个工作线程的情况下,我能想到的最简单的方法是在ProgressBar活动中使用共享变量,然后如果我得到正确的地址指针,我就会更新JNI方法中的共享变量。可能吗?或者我还需要考虑其他事情吗?
可见
static long int _PROGRESS = 0;
我想从本机方法调用中获取此变量,例如
JNI_EXPORT java_com_example(env, jobject......){
for loop{
//do something
_PROGRESS++; }}
如何才能最好地制作指向共享变量的指针?或者每次发生更新时都必须返回,我想避免这种给定的JNI调用开销。
答案 0 :(得分:0)
根据Java规则,它必须是类静态变量。 Java中的全局范围中没有变量。
要更新C侧的其中一个,请使用JNIEnv::SetStaticLongField()
。要读取当前值,请使用GetStaticLongField()
。通过JNI没有直接的变量访问。
请注意,long int
不是Java中的有效数据类型。 long
是。并且它与C侧的jlong
相对应, 与C long
相同。