2015-04-06 75 views
0

试图学习Android应用程序开发。我需要一个大概的想法。我读到可以使用HTML5构建应用程序。但我知道HTML5将只允许原生应用程序,我的意思是,没有服务器,没有数据库。那是我的猜测。
像在web开发中,我们有PHP作为处理所有服务器端操作的服务器端语言,android中的服务器端语言是什么?让我们来看看instagram的例子(我不打算建立这样的东西,但只是想明白)。它存储照片,用户可以喜欢,分享他们的个人信息,存储,删除等。这样的应用程序可以用HTML5?或者Java,Python对于这样繁重和复杂的应用程序是必需的?如果任何人都可以提供有关Android应用程序开发的原生信息和网络信息,我会很感激。Android应用程序开发基础知识问题

回答

2

HTML5可以用来代替应用程序的用户界面 - 而不是使用布局和Android组件(LinearLayoutRelativeLayout - ListViewRecyclerView - TextViewButtonImageView ......),你会使用HTML/CSS/JS在Web视图中显示您的用户界面。您还可以在webview中为呈现的HTML指定点击事件,为此您可以在Java中使用@JavascriptInterface注释的方法来与Android进行通信(可靠性只有3.0以上!它在2.3中有bug !!!),以便您可以执行Java级别的逻辑。

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

尽管过程中出现了一个全新的问题级别。错误处理可能会变得混乱,CSS可能在Android 4.3及更低版本与Android 4.4及更高版本之间不一致(除非您使用的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客户端完全独立的。它可以是PHP,Ruby on Rails或Java EE/Spring Framework的无堆栈Python,Android客户端并不关心 - 只要使用REST API而不是Web服务即可。 SOAP在Android上很糟糕。

+0

感谢您的回复。我喜欢HTML5,因为它是跨平台兼容的。如果我在android studio中制作和应用,我将不得不在iOS XCODE中制作应用程序(这就是有些人告诉我的)。所以不要让2个版本使用跨平台的HTML5。现在,你的意思是复杂的应用程序可以用后端的Java等HTML5构建? –

+0

从技术上讲,我正在努力工作。但是我不认为你的CSS不一致:CSS不一致比你获得的更多时间,本地应用程序往往更快,**使用**'jQuery Mobile'而不是Ionic Framework **是最糟糕的决定之一* * 我们创造。 jQM是一个不稳定的混乱。此外,您绝不能使用多个本地HTML文件 - 使用某种类型的框架(AngularJS,Ionic,或者甚至可能是jQM,如果您讨厌自己的话),因为清空DOM并重新加载DOM需要太多时间并导致非常差的闪烁。对于后端,我们使用了Spring Framework。 **春季靴子**是惊人的。 – EpicPandaForce

+0

老实说,混合应用程序是值得的只有当你可以逃脱一个更大的APK,你是4.0 +或以上,并且你使用Crosswalk而不是本地webview,因为4.3-webview中有很多故障。否则,您将花时间修复最奇怪的错误,而不是使用Android特定的东西。例如,第二次加载应用程序时,Javascript界面​​不会重新加载。看看你自己:http://stackoverflow.com/questions/18654009/e-web-console8272-uncaught-referenceerror-functionname-is-not-defined1-whil/29415811#29415811 – EpicPandaForce