【问题标题】:Android App Development Basics QuestionsAndroid 应用开发基础问题
【发布时间】:2015-06-11 00:22:55
【问题描述】:

尝试学习安卓应用开发。我需要一个总体思路。我读到可以使用 HTML5 构建应用程序。但我知道 HTML5 将只允许原生应用程序,我的意思是,没有服务器,没有数据库,什么都没有。这就是我的猜测。
就像在 Web 开发中一样,我们将 PHP 作为服务器端语言来处理所有服务器端操作,那么 android 中的服务器端语言是什么?让我们以 instagram 为例(我不打算构建类似的东西,只是想了解一下)。它存储照片,用户可以喜欢,分享他们的个人信息,存储,删除等。这样的应用程序可以用 HTML5 制作吗?还是Java、Python对于如此繁重复杂的应用程序是必要的?如果有人能提供有关原生和网络 android 应用程序开发的适当信息,我将不胜感激。

【问题讨论】:

    标签: android


    【解决方案1】:

    HTML5 可用于替换应用程序的 UI - 而不是使用布局和 android 组件(LinearLayoutRelativeLayout - ListViewRecyclerView - TextViewButtonImageView ...) 您将使用 HTML/CSS/JS 在 Web 视图中显示您的 UI。您还可以在 webview 内的呈现 HTML 中指定单击事件,为此您可以使用 Java 中的 @JavascriptInterface 注释方法与 Android 通信(仅从 3.0 及更高版本可靠!它在 2.3 中存在错误!!!),以便您可以在 Java 级别执行逻辑。

    如果您需要与服务器通信,那么如果您使用 HTTP(或者甚至可能是 HTTPS 直到某个点 - 不支持客户端证书),那么您甚至可以使用 jQuery $.ajax() 请求。

    尽管在此过程中出现了全新级别的问题。错误处理可能会变得混乱,Android 4.3 及更低版本与 Android 4.4 及更高版本之间的 CSS 可能会不一致(除非你使用 Crosswalk 项目12,它仅适用于 4.0+)。

    最大的麻烦当然是从 Java 到 Javascript 以及从 Javascript 到 Java 的通信。请注意@JavascriptInterface 调用是由WebView 本身的渲染线程完成的。

    为此,我使用了这个

    (function(root) {
        root.bridge = (function() {
            var handlers = {};
            return {
                init: function () {
                },
                getHandlers : function() {
                    return handlers;
                },
                callHandler : function(name, param) {
                    if(param !== null && param !== undefined) {
                        Android[name](param);
                    } else {
                        Android[name]();
                    }
                },
                registerHandler : function(name, method) {
                    if(handlers === undefined) {
                        handlers = {};
                    }
                    if(handlers[name] === undefined) {
                        handlers[name] = method;
                    }
                }
            };
        }());
    })(this);
    

    正如我在这里解释的那样:https://stackoverflow.com/a/27426896/2413303

    服务器端完全独立于 Android 客户端。它可以是 Python 到 PHP、Ruby on Rails 或 Java EE / Spring 框架的无堆栈 Python,Android 客户端不在乎 - 只要您使用 REST API 而不是 Web 服务。 SOAP 在 Android 上简直就是地狱。

    【讨论】:

    • 感谢您的回复。我喜欢 HTML5 因为它是跨平台兼容的。如果我在 android studio 中制作和应用程序,我将不得不在 XCODE 中为 IOS 制作应用程序(这就是某些人告诉我的)。因此,与其制作 2 个版本,不如使用跨平台的 HTML5 制作。现在,您的意思是可以在后端使用 HTML5 和 Java 等构建复杂的应用程序吗?
    • 技术上,我正在工作中。但我没有骗你:CSS 不一致占用的时间比你获得的要多得多,原生应用程序往往更快,并且 使用 jQuery Mobile 而不是 Ionic 框架 是其中之一我们做出的最糟糕的决定。 jQM 是一个不稳定的混乱。此外,您绝不能使用多个本地 HTML 文件 - 使用某种框架(AngularJS、Ionic 或什至 jQM,如果您讨厌自己),因为清空 DOM 并重新加载 DOM 需要太多时间并导致非常糟糕的闪烁.对于后端,我们使用了 Spring Framework。 Spring Boot 太棒了。
    • 老实说,混合应用程序只有在你可以使用更大的 APK 时才值得,你是 4.0+ 或更高版本,并且你使用 Crosswalk 而不是本机 webview,因为存在很多故障4.3- webview。否则,您将花时间修复最奇怪的错误,而不是使用 Android 特定的东西。例如,Javascript 界面在您第二次加载应用程序时未重新加载。自己看看:stackoverflow.com/questions/18654009/…
    • 最奇怪的是我们需要制作一个类似时间线的东西,而且速度很慢。所以我不得不使用一个名为iScroll 5 的库来让它不慢。混合应用在旅途中会带来很多惊喜。
    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多