【问题标题】:Difference between Kivy and Java for android appsKivy 和 Java 用于 Android 应用程序的区别
【发布时间】:2013-09-04 10:03:58
【问题描述】:

我是一名 python 开发人员,几乎没有在 java 中创建 Android 应用程序的经验,我想创建一个应用程序来访问我的大学门户网站、检索一些数据并在视图上显示。

所以,在研究了 Kivy 之后,我有几个问题:

1)哪一个更容易和更快地开发安卓应用?

2) Kivy 有任何安卓功能限制吗?

3)最后,使用 kivy 开发的 android 应用程序的运行速度是否与使用 java 开发的应用程序一样快?

【问题讨论】:

  • 某些部分只能通过 Java 访问(我认为)。而且我无法想象它会运行得这么快,但是由于您的应用是轻量级的,您应该不会注意到任何差异。
  • 您的评论让我担心,但我认为正如@inclement 在他的回答中所说,pyjnius 可以提供对所有 android java api 的访问。也许现在还没有满,但并不意味着某些部分只能通过 java 访问。

标签: java android python kivy


【解决方案1】:

为了完成恶劣的回答,pyjnius 确实允许访问很多 android api。但这并不完美,调用现有的类并不总是足够的,并且android程序员经常需要创建将被android调用来管理事件的代码,有两种方法可以做到这一点,都被android api使用。

  • 第一个是接口:你需要创建一个实现现有java接口的类,pyjnius可以做到,你创建一个python类并声明它实现的java接口,并有一个装饰器来声明你拥有的方法声明。
  • 第二个是子类化,你需要继承一个现有的java类并覆盖一些方法,而我们还没有办法用pyjnius做到这一点,所以对于这些,你必须创建一个java类并在您的程序中使用它(幸运的是,您可以将它与 kivy/pyjnius 混合使用,在那种情况下它不可能是 100% python)。

因此,值得事先查看 api,看看您必须访问的 android api 的部分是否需要它。

【讨论】:

    【解决方案2】:

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

    1) 哪一个更容易和更快地开发安卓应用?

    我认为 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,否则差异不大可能很重要。您建议的任务将不受这种限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 2012-11-04
      • 2011-05-13
      • 2013-07-04
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 2020-11-29
      相关资源
      最近更新 更多