2015-04-06 39 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