小编Dra*_*ara的帖子

116
推荐指数
8
解决办法
12万
查看次数

通过JNI从不同的线程调用保存的java对象

我有一个java对象,它通过JNI调用C++共享对象.在C++中,我保存了对JNIEnv和jObject的引用.

JavaVM * jvm;
JNIEnv * myEnv;
jobject myobj;

JNIEXPORT void JNICALL Java_org_api_init
   (JNIEnv *env, jobject jObj) {
    myEnv = env;
    myobj = jObj;
}
Run Code Online (Sandbox Code Playgroud)

我还有一个GLSurface渲染器,它最终在另一个线程GLThread上调用上面提到的C++共享对象.然后我尝试使用我最初保存的jobject回调到我的原始Java对象,但我想因为我在GLThread上,我得到以下错误.

W/dalvikvm(16101): JNI WARNING: 0x41ded218 is not a valid JNI reference
I/dalvikvm(16101): "GLThread 981" prio=5 tid=15 RUNNABLE
I/dalvikvm(16101):   | group="main" sCount=0 dsCount=0 obj=0x41d6e220 self=0x5cb11078
I/dalvikvm(16101):   | sysTid=16133 nice=0 sched=0/0 cgrp=apps handle=1555429136
I/dalvikvm(16101):   | schedstat=( 0 0 0 ) utm=42 stm=32 core=1
Run Code Online (Sandbox Code Playgroud)

回调Java的代码:

void setData()
    {
        jvm->AttachCurrentThread(&myEnv, 0);

        jclass javaClass = myEnv->FindClass("com/myapp/myClass");
        if(javaClass == …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface android android-ndk

23
推荐指数
1
解决办法
8134
查看次数

如何在JavaScript中创建受保护的对象属性

是否有一个JavaScript模式模仿"受保护的"对象属性,就像你在C++这样的语言中看到的那样?

基本上,我想创建一个具有许多"受保护"对象属性的对象A,这些属性只能从对象A的原型中定义的方法访问.即 - 不能从A的非原型方法公开访问.

例如,理想情况是这样的:

function A(){
    var prop1 = 1;      
}

A.prototype.myFunc = function(){
    var newVar = this.prop1;   //newVar now is equivalent to 1
}

var instanceOfA = new A();
var newVar2 = instanceOfA.prop1;  //error given as prop1 is "protected"; hence undefined in this case
Run Code Online (Sandbox Code Playgroud)

BTW - 我不希望特权成员函数的模式访问私有属性,因为成员函数仍然是公共的.

javascript prototype-programming

12
推荐指数
3
解决办法
1万
查看次数

何时在Android中使用res/xml vs.res/layout文件夹

我正在为我的应用程序创建首选项,并注意到一些示例将XML存储在res/layout中,其他将它们存储在res/xml中.是否有理由或最佳做法将它们存储在一个与另一个之间?我的res/layout文件夹中已经有一堆布局文件,所以将首选项布局文件放在res/xml中是否有意义?

android android-ui

9
推荐指数
2
解决办法
6837
查看次数

SQLite连接和锁定

我想从2个不同的线程访问SQLite数据库,从而使用2个不同的数据库连接.两个线程主要执行来自DB的读取,并且仅偶尔写入DB.如果我觉得两个线程同时写入数据库的可能性很大,我是否应该感到安全,在这种情况下我不应该有任何问题?

sqlite android locking

8
推荐指数
2
解决办法
6747
查看次数

在Android App中加载多个本机库的最佳方法

我有一个使用3个不同JAR库的应用程序...让我们将它们称为a.jar,b.jar和c.jar。每个JARS都有一个随附的本机C ++共享库。

现在,a.jar和b.jar都将导入并使用c.jar。

所以,我的问题是-使用system.loadLibrary加载本地库时最好的方法是什么?我可以仅从我的应用程序代码中加载它们,还是必须由相应的JAR加载它们?如果我从相应的JAR文件中加载它们,是否会在单独的线程中加载?

java java-native-interface android jar android-ndk

5
推荐指数
1
解决办法
1447
查看次数

如何从C++/JNI调用Java方法,该方法采用Android Context参数

我试图通过Android上的C++/JNI调用Java类.更具体地说,我试图调用此类的构造函数,该构造函数将Android上下文作为参数.如果我的构造函数没有参数,我没有问题成功调用,但是当我将必要的Context作为参数包含在内时,我不知道我的JNI签名应该是什么样的,并且还怀疑这是否可能因为我没有访问该上下文对象.

所以,我的问题是,是否可以调用Java类的构造函数,该类将Android上下文作为其唯一参数?如果是这样,怎么样?如果没有,是否有解决方法,因为我需要上下文来访问某些Android API类.

c++ java java-native-interface android

5
推荐指数
1
解决办法
1947
查看次数