当前位置: 代码迷 >> Android >> 请问JNI调用的C程序常驻内存方法
  详细解决方案

请问JNI调用的C程序常驻内存方法

热度:23   发布时间:2016-04-28 05:17:02.0
请教JNI调用的C程序常驻内存方法
请教各位大牛,我需要写一个C程序,android java通过JNI来调用,C程序读取SD卡上一个几十兆的加密数据文件,解密后存放到数组,根据调用参数进行查询和计算,并向java返回计算结果。
一个读取、解密、加载的过程大概需要花费好几秒钟,我希望java主程序能每秒进行一次JNI调用并显示结果。不知道有没有方法,在C程序被调用退出后,不销毁这个数组,下一次jni调用时能直接访问数组?这样就能减少很多时间。
如果不可行,还有没有其他的技术可以做到?(因为想保密的原因,不考虑把解密后的数据存成文件这种方法或全部代码都用java来实现)
------解决方案--------------------
两个解决方案 : 
1. C 语言底层 不要退出, 保持C程序驻留在内存中; 
-- 可以开启个进程 , 阻塞, 调用的时候通过进程间通信 , 获取结果 ; 

2. 把数组弄到 Java层, 这就好办了;


能把数据返回到Java最好,   C语言的在研究研究吧
------解决方案--------------------
建议你把 这个数组 通过JNI   反存储到 java 静态的数组中去 是可以的。后面就不需要再去调用JNI了。这个本质上也是安全的,
  相关解决方案