Chaquopy 教程
**写在开头,license请自己申请,使用别人的会被检测使其失效。 **
Chaquopy重大更新:最新版本无需license!!!
Chaquopy
官方链接:https://chaquo.com/chaquopy/
Chaquopy的作用:使用Chaquopy在Android Studio添加Python环境,java和Python互调
目前调试后APP可以正常运行(2020年12月18日)
前两篇文章(教程1、教程2、教程3)已经介绍了在Android studio使用chaquopy的步骤,接下来介绍我开发过程中遇到的一个小问题,虽然不致命,但是不解决的话就很烦。
第一次调用Python处理时间较长
在实际自己开发过程中发现一个问题,第一次调用Python处理的时间有点长,但是之后就感觉变快了。通过检查代码,发现是创建Python接口的时间影响的。
首先可以给大家看看我这部分的代码:
先是导入相关库:
import com.chaquo.python.Kwarg;
import com.chaquo.python.PyObject;
import com.chaquo.python.android.AndroidPlatform;
import com.chaquo.python.Python;
然后是在onCreate函数里面先使用以下代码进行初始化:
initPython();
initPython函数内容为:
// 初始化Python环境
void initPython(){
if (! Python.isStarted()) {
Python.start(new AndroidPlatform(this));
}
}
之后在需要使用Python代码处理数据时主要内容为:
Python py = Python.getInstance();
PyObject obj1 = py.getModule("function").callAttr("wav2picture",new Kwarg("wav_path", path),new Kwarg("pic_path", pic_path));
主要影响时间的,就是上面的第一行“Python py = Python.getInstance()”,个人理解!!!因为第一次使用,就需要第一次去获取一个instance,而之后每次还需要执行这段代码时,就可以使用上次获取的实例继续使用,从而只有第一次时间会受到影响。当然,这样分析,是因为我后续只修改了这里就解决了问题而得出的结论。
那么怎么去解决这个问题呢?因为这段代码是一定要执行的,所以我们可以将这段代码执行的时机改变一下就行,我的解决方案是在加载APP时,执行这段代码,因为这样就把这段时间移到了打开APP这个阶段,而打开APP这个阶段时间长一点,一般都不会有什么影响。
具体修改方法如下图所示:
首先定义两个私有变量:
private Python py;
private PyObject obj;
然后是在onCreate函数中的初始化代码后面加上以下几行:
initPython();
this.py = Python.getInstance();
this.obj = py.getModule("function")
- 这里getModule的用法请参考前面的教程
那么在我需要调用Python处理数据处的代码内容如下:
this.obj.callAttr("wav2picture",new Kwarg("wav_path", path),new Kwarg("pic_path", pic_path));
这样就解决了第一次调用Python处理数据时间过长的问题了!
本文是Chaquopy教程系列的第四部分,讲述了在Android应用中使用Chaquopy时,首次调用Python处理时间较长的问题及解决方案。作者发现`Python.getInstance()`是导致延迟的原因,并建议在APP启动时预加载Python环境来改善用户体验。

5242

被折叠的 条评论
为什么被折叠?



