0

我想将 JNI 方法的进度更新为进度条。在不创建多个工作线程的情况下,我能想到的最简单的方法是在 ProgressBar 活动中使用共享变量,然后如果我获得指向地址的正确指针,我只需更新 JNI 方法中的共享变量。可能吗?还是我必须想点别的?

可见的

static long int _PROGRESS = 0; 

我想从本地方法调用访问这个变量让我们说

JNI_EXPORT java_com_example(env, jobject......){
for loop{
   //do something
  _PROGRESS++; }}

我怎样才能最好地创建一个指向共享变量的指针?还是每次发生更新时我都必须返回,我想避免这种给定的 JNI 调用开销。

4

1 回答 1

0

根据 Java 规则,它必须是类静态变量。Java 的全局范围内没有变量。

要从 C 端更新其中之一,请使用JNIEnv::SetStaticLongField(). 要读取当前值,请使用GetStaticLongField()。没有通过 JNI 直接访问变量。

请注意,这long int不是 Java 中的有效数据类型。long是。它对应jlong于 C 端,C 不同long

于 2013-04-11T16:06:35.250 回答