java - 在 Android 和 "other platforms"之间生成可移植应用程序的推荐方法

标签 java android portability

我正在为 Android 开发一个应用程序,我认为它的功能可能在其他(运行 Java 的)平台上有用(比如常规桌面应用程序——尽管我希望其他平台也参与其中对手头的问题无关紧要)。

UI 不太可能以任何方式便携(良好的触摸功能、4 英寸屏幕 UI 和鼠标键盘 19 英寸屏幕 UI 之间的差异太大),所以我很高兴单独重新实现就足够了。

但是,理论上,核心“业务逻辑”(呃,可怕的词)和模型(数据存储)类可以在管理核心应用程序时重复使用。我注意到我正在编写的很多类最终都引用了一些特定于 Android 的位(例如,我有 XML 资源文件、图像和 SQLite 数据库)。到目前为止,我所写的所有内容基本上都至少有一个与 Android 相关的导入。

我的问题有两个:

  • 有哪些工具可以帮助我在非 Android 平台上使用与 Android 相关的类和功能(例如资源、数据库);和
  • 由于不可移植性,我应该完全避免使用 Android 平台的哪些类、功能等(为简单起见,我们排除与 UI 相关的项目),以及我应该改用什么来提高可移植性。<

只要提供一些理由,包含“哈哈哈哈,你注定失败”的答案都可以。

(P.S. 如果这个社区 wiki 仍然可用,我会制作它;这对我来说似乎是一个完美的 CW 问题——Android 可移植性技巧和工具的列表)

最佳答案

看起来您已经通过将 UI 和业务逻辑/模型分开来确定了关键点。 此外,sqlite 本身不仅用于 Android。但是当然,您与它交互的方式(例如 SQLDBOpenHelper)又是不同的。

所以我想将业务逻辑和模型尽可能分开是可行的方法。 然后你可以在它周围放置一个包装器(例如,与特定数据库对话的“数据访问对象”模式)。

请记住,当您在 UI 端尽可能特定于平台时,用户体验是最好的。 例子:Android市场上有一款App(Push & Ride),貌似运行在J2ME模拟器中。所以屏幕输入不是使用设备正常的软(或硬)键盘,而是模拟手机键盘,数字键上有“abc”“def”连击,这让数据输入有点奇怪。 这个应用程序肯定非常便携(而且它的功能真的很棒),但就是感觉不对。

当你想要跨平台时,你可能还会看看像 Appcelerator 或 Adob​​e AIR 这样的东西

关于java - 在 Android 和 "other platforms"之间生成可移植应用程序的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977147/

相关文章:

java - Joda 和移动程序/将程序放在多台计算机上

java - Android:访问内部 AsyncTask 类的变量,但在 fragment 的 onCreateView 中将其设置为 null

android - Kotlin中的对话框警报

c++ - 在文件可移植性问题中存储 32 位 float

c++ - 确定在 C++11 中实现大数的最有效字长?

Python:不在 Windows\System32 中搜索 pythonXX.dll?

java - 批量更新 Elasticsearch 实体

Java:二维数组以列优先还是行优先顺序存储?

android - 将字符串从 Activity 传递回 Android 中运行的 Fragment

java - 我应该使用 AsyncTask 还是 IntentService 进行 REST API 调用?