Kivy和Java在Android应用程序中的区别

21

我是一名Python开发者,对于使用Java创建Android应用程序的经验较少,希望创建一个应用程序来访问我的大学Web门户网站,检索一些数据并显示在视图中。

因此,在研究Kivy之后,我有几个问题:

1) 哪一个更容易和更快地开发Android应用程序?

2) Kivy是否有任何Android特性限制?

3) 最后,使用Kivy开发的Android应用程序能否与使用Java开发的应用程序运行速度相同?


2
一些部分只能通过Java访问(我想)。虽然我无法想象它会运行得那么快,但由于您的应用程序很轻巧,您不应该注意到任何差异。 - keyser
1
你的评论让我有些担忧,但是我认为正如@inclement在他的回答中所说,pyjnius可以提供对所有Android Java API的访问。也许现在还不完全,但并不意味着某些部分只能通过Java访问。 - Guilherme David da Costa
这是他们网站上的内容:_一些 Android API 可以直接通过 Pyjnius 访问,但有些需要您使用 Java 编码。_。但是,我不会担心。 - keyser
2个回答

18

这是一个相当主观的问题。

1)哪种方法更容易、更快速地开发Android应用程序?

我认为有很多人支持Kivy,但这个问题没有客观答案。

2)Kivy是否存在访问Android特定部分的限制(例如未完全集成其API)?

Kivy项目包括Pyjnius,一种通过Python访问Java类的工具,原则上我认为这应该会给予对Java API的任意(编辑:反思后,不是任意,但可能在立即重要的方面没有限制)访问权。

实际上,预构建的Python包装器正在进展中,但正在迅速改善。Android Python库已经可以轻松访问许多东西(包括但不限于意图、振动、加速度计等)。即使没有Python包装器,做必要的工作也可能非常容易。

编辑:最近Kivy的Plyer项目取得了巨大的进展,旨在提供透明的API以调用平台特定工具,从而能够在不知道详细信息的情况下在不同系统上调用它一次并获得相同的行为。它包括Android API的有用支持。

3)最后,使用Kivy开发的Android应用程序是否与使用Java开发的应用程序运行速度相同?

最终答案可能是否定的,但差异高度不可能重要,除非您正在进行强烈的CPU限制任务。你提到的任务不会受这种方式的限制。


14
为了完善inclement的回答,pyjnius确实允许访问许多Android API。但它并不完美,调用现有类并不总是足够的,而且Android程序员通常需要创建代码来管理事件,有两种方法可以做到这一点,这两种方法都被Android API使用。
第一种方法是接口:您需要创建一个实现现有Java接口的类,pyjnius可以做到这一点,您创建一个Python类并声明它实现了哪个Java接口,并使用装饰器声明你需要实现的方法。
第二种方法是子类化,您需要对现有的Java类进行子类化并重写部分方法,但我们目前还没有办法使用pyjnius来实现这个功能,因此对于这些情况,您需要创建一个Java类并在程序中使用它(幸运的是,您可以在kivy/pyjnius中混合使用,只是在这种情况下不能完全使用Python)。
因此,在访问Android API时,事先查看API的部分内容是否需要使用这些方法可能是值得的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接