递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 7753|回复: 1
打印 上一主题 下一主题

[安卓] 火山Py类库

[复制链接]

14

主题

105

帖子

651

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
651
QQ
跳转到指定楼层
楼主
发表于 2019-12-31 21:04:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 华天微读 于 2019-12-31 21:10 编辑

  我也不知道咋想的,突然就想搞一个火山安卓平台上可用的Py解释器(实际上是android上运行,只是封装成火山类库),后来,我仔细想了一下,发现折腾这个确实是可行的....(好处, 省略掉千言万语),  就咱们普通用户来说, 好处体现在两点.
  1. Py类库相当多, 火山跑Py, 就相当于, 火山可以使用大部分的Py开源库(注意, 是开源库).
  2..... 忘词了。自行体会吧.

  首先, 先认识一下我为大家准备的几个方法,以及其作用(应用于Py代码中的方法)
1


  然后,再认识一下火山中的方法.
  1. 1.线程方法
复制代码


  通过以上的代码组合,即可完成火山与Py的相互通信.相互调用.
  例如,我通过把一个窗口对象设置进py中,那么,我就可以在py中,通过这个对象,调用窗口类的任意方法,比如 关闭,以及**出信息框


其中,画红框的意思是, 当我执行这一段代码的时候,会调用火山中的"msgbox"方法,也就是"**出提示框"方法, 这个"msgbox"只是给他设置的一个输出名.
第二段的意思是,直接通过当前的对象,调用窗口类的方法"finish"也就是"关闭",直接关闭当前这个窗口.

这些方法可执行的前提,是你需要提前把窗口对象设置进去.
  




问:如果我想要执行的py代码很耗时怎么办?会不会阻塞app的ui线程(卡主APP的界面)?
答:会的,如果需要在py中执行较为耗时的代码的话,那么你就需要使用"进入子线程"与"退出子线程"了,将所欲执行的py代码,都放到这两个方法中间,这样,在执行时,就不会阻塞app的ui线程了,如下图.


这是我在测试时,对某站进行一个小说的数据的读取(非爬虫,爬虫违法,请各位知悉), 因为HTTP访问,比较耗时,所以我将代码都放到了子线程中去执行,有细心的朋友可能会看到, 里面怎么有个"callThreadMethod"? 这是什么鬼?  他就是接下来要介绍的方法了.

  在子线程中,如果想要访问另外一个线程(子线程访问主线程),在火山里没有要求那么严格,大家平时可能也没有注意, 但是在NDK编程中,这就需要注意了,
因为,一旦涉及到跨线程,稍不注意,就崩溃,崩溃到人崩溃!额 跑题了,回到正题, 之所以在子线程中,要用"callThreadMethod"就是因为NDK跨线程的问题崩溃的问题,使用这个方法,即可避免崩溃,这个方法呢,也不是调用指定的方法,而是,调用火山py类中的"火山Py类_线程方法被触发"这个事件,用户可以添加这个事件,当执行"callThreadMethod"后,就会触发这个事件了,"callThreadMethod"所提供的参数,都被添加到了一个对象数组中,也就是这个


如果要取出数据,那只需要取数组中取出成员,并且强转为响应的数据类型即可.
例如, 如上上图,我在执行"callThreadMethod"方法时,给了四个参数,都是文本型的数据,那么,我就可以这样取出来.




好了,基本上介绍的差不多了,我会在下面附上使用示例,大家配合本文稍微看看就能明白.

注意事项
差点忘记了,关于Py与火山方法相互调用时,能传递的数据类型得说明一下.


不论是返回类型,还是参数类型,目前只支持 长整数(Py中为int), 小数(Py中为Float), 文本型, 逻辑型.所以,想要两种语言相互调用,只能用这四种数据类型, 对象类以及其他的set,tuple等等,我会在闲暇时逐渐完善.


例程文件(目前我只提供了arm64-v8a的库,也就是说, 不支持在模拟器上运行,不支持5.1一下的安卓设备):
链接:https://share.weiyun.com/5svbvgM 密码:qghrak



火山基础入门,100元特价优惠!
加群咨询:710113438
详情:http://jc.wlxs.net/
回复

使用道具 举报

5

主题

33

帖子

203

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
203
沙发
发表于 2022-1-9 23:27:41 | 只看该作者
万分感谢,大佬牛逼,爱你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-29 00:29 , Processed in 0.078413 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表