试图学习Android应用程序开发。我需要一个大概的想法。我读到可以使用HTML5构建应用程序。但我知道HTML5将只允许原生应用程序,我的意思是,没有服务器,没有数据库。那是我的猜测。
像在web开发中,我们有PHP作为处理所有服务器端操作的服务器端语言,android中的服务器端语言是什么?让我们来看看instagram的例子(我不打算建立这样的东西,但只是想明白)。它存储照片,用户可以喜欢,分享他们的个人信息,存储,删除等。这样的应用程序可以用HTML5?或者Java,Python对于这样繁重和复杂的应用程序是必需的?如果任何人都可以提供有关Android应用程序开发的原生信息和网络信息,我会很感激。Android应用程序开发基础知识问题
回答
HTML5可以用来代替应用程序的用户界面 - 而不是使用布局和Android组件(LinearLayout
,RelativeLayout
- ListView
,RecyclerView
- TextView
,Button
,ImageView
......),你会使用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上很糟糕。
- 1. iPhone应用程序开发基础知识
- 2. Oracle JDE开发基础知识
- 3. iPhone游戏开发基础知识
- 4. Java开关基础知识
- 5. 如何开始学习使用C++编写XBOX 360 KINECT程序开发Windows应用程序的基础知识?
- 6. Python程序包基础知识
- 7. 高流量应用程序的基础知识
- 8. 创建类似Wiki的Web应用程序的基础知识?
- 9. Threading基础知识
- 10. C++基础知识
- 11. Ruby基础知识
- 12. 基础SQL知识?
- 13. Modernizr基础知识
- 14. Feedburner基础知识
- 15. AOP基础知识
- 16. Makefile基础知识
- 17. SceneKit基础知识
- 18. Android应用程序开发 - 相机应用程序的问题
- 19. 如何开始为Internet.org开发(免费基础知识)
- 20. android上的opengl基础知识?
- 21. Android HTTPS连接基础知识
- 22. 使用Wordpress开发应用程序作为基础?
- 23. 线程信号基础知识
- 24. 如何学习编程基础知识?
- 25. SSAS 2008基础知识:教程
- 26. C#和sqlite基础知识
- 27. Spring Security基础知识
- 28. XML到WordML基础知识
- 29. Atom feed基础知识
- 30. 新手Git基础知识
感谢您的回复。我喜欢HTML5,因为它是跨平台兼容的。如果我在android studio中制作和应用,我将不得不在iOS XCODE中制作应用程序(这就是有些人告诉我的)。所以不要让2个版本使用跨平台的HTML5。现在,你的意思是复杂的应用程序可以用后端的Java等HTML5构建? –
从技术上讲,我正在努力工作。但是我不认为你的CSS不一致:CSS不一致比你获得的更多时间,本地应用程序往往更快,**使用**'jQuery Mobile'而不是Ionic Framework **是最糟糕的决定之一* * 我们创造。 jQM是一个不稳定的混乱。此外,您绝不能使用多个本地HTML文件 - 使用某种类型的框架(AngularJS,Ionic,或者甚至可能是jQM,如果您讨厌自己的话),因为清空DOM并重新加载DOM需要太多时间并导致非常差的闪烁。对于后端,我们使用了Spring Framework。 **春季靴子**是惊人的。 – EpicPandaForce
老实说,混合应用程序是值得的只有当你可以逃脱一个更大的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