Android 开发有什么好的架构么
发布时间:2025-05-17 13:21:35 发布人:远客网络
一、Android 开发有什么好的架构么
Android应用开发架构的话,现在比就流行的分为以下三种:
MVC(Model-View-Controller),这是最常见的软件架构,它分为三个部分
控制器(Controller):业务逻辑
View传送指令到 Controller,Controller完成业务逻辑后,要求 Model改变状态Model将新的数据发送到 View,用户得到反馈。
2. MVP,MVP模式将 Controller改名为 Presenter,同时改变了通信方向。
各部分之间的通信,都是双向的。
View与 Model不发生联系,都通过 Presenter传递。
View非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
3.MVVM,MVVM模式将 Presenter改名为 ViewModel,基本上与 MVP模式完全一致。唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular和Ember都采用这种模式。
二、android软件开发的架构
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity全部画面被其他 Activity取代时,该 Activity便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过 View类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。在模拟器上运行仿真是虚拟设备(AVD),我们需要配置来运行我们的Android应用程序。步骤1、开放的AVD管理步骤2、新的按钮,点击添加新设备,并配置您的设备设置。步骤3、会有一个结果窗口显示所有已配置你上一屏幕选择。步骤4、按“确定”,你将会看到你的设备列在有你可以关闭此窗口。步骤5、运行你的Android应用程序项目从Eclipse,如果只有一个AVD配置,它会自动部署的应用程序也会出现一个窗口,选择你的图片。仿真器将开始。在设备上运行
Android应用程序可以直接部署在Android设备上,这几个配置所需要的。步骤1、在调试模式的设置可以设置应用程序:Android的<应用程序>元真可调试属性。ADT 8这是默认的。步骤2、您的设备上启用USB调试:Android 3.2或以上转至设置>应用程序>开发和启用USB调试。在Android 4更新,这是开发商选择设置>。注:在Android 4.2更新,开发者选项是默认隐藏。可以,去设定>android的版本号。返回先前屏幕找到开发商选择。步骤3、安装USB驱动程序为您的设备,计算机识别你的设备。步骤4、一旦设置和您的设备通过USB连接,从Eclipse菜单栏安装您的应用程序在设备上选择运行>运行(或运行>调试)。操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是Apple Safari浏览器背后的引擎。Surface flinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia也是Google Chrome的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。 Android的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把 Android framework与 Linux kernel隔开,让 Android不至过度依赖 Linux kernel,以达成 kernel independent的概念,也让 Android framework的开发能在不考虑驱动程序实现的前提下进行发展。
HAL stub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向 HAL“提供”操作函数(operations),并由 Android runtime向 HAL取得 stub的 operations,再 callback这些操作函数。HAL里包含了许多的 stub(代理人)。Runtime只要说明“类型”,即 module ID,就可以取得操作函数。 Android是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver与 Linux kernel彻底分开。bionic/libc/kernel/并非标准的kernel header files。Android的 kernel header是利用工具由 Linux kernel header所产生的,这样做是为了保留常数、数据结构与宏。
Android的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是 Android用来辅助Git工作的一个工具。
三、一般的android开发都用到了系统架构哪些层
一般的android开发都用到了系统架构哪些层?
1:android分为四个层,从高层到低层分别是应用程式层、应用程式框架层
1:android分为四个层,从高层到低层分别是应用程式层、应用程式框架层
开发一个程式,android系统框架是层层相扣,不能分开的。应用程式层:这个层主要指的就是用java语言编写的执行在虚拟机器上的程式,Google在最开始时就在android系统中捆绑了一些核心的应用(核心应用的编写必须使用应用层序框架层的API框架.
2:android开发框架有四个层,从高层到低层分别是应用程式层、应用程式框架层
android应用开发框架是 Application Framework.其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
:m2m.temolin./doc/62/m100wu-lian-mo-kuai
对于作业系统来言,不存在C/S,B/S一说。
java的确执行效率不如C/C++,但任何开发语言都有其各种特点,有缺点必有优点,否而只能被淘汰。
java有很多过人之处,要不然android也不会看上java作为其应用层的开发语言。
android相比IOS,的确存在距离,但我始终相信以LINUX为核心的android在几百万开发者的磨练下,将会越来越完美,“开源”永远值得人们去琢磨,精益求精!
Solaris支援多种系统架构: SPARC, x86 and x64. x64即AMD64及EMT64处理器。在版本2.5.1的时候,Solaris曾经一度被移植到PowerPC架构,但是后来又在这一版本正式释出时被删去。与Linux相比,Solaris可以更有效地支援对称多处理器、即SMP架构。Sun同时宣布将在Solaris 10的后续版本中提供Linux执行环境,允许Linux二进位制程式直接在Solaris x86和x64系统上执行。
Solaris传统上与基于Sun SPARC处理器的硬体体系结构结合紧密,在设计上和市场上经常捆绑在一起,整个软硬体系统的可靠性和效能也因此大大增强。然而SPARC系统的成本和价格通常要高于PC类的产品,这成为Solaris进一步普及的障碍。可喜的是,Solaris对x86体系结构的支援正得到大大加强,特别是Solaris 10已经能很好地支援x64(AMD64/EMT64)架构。Sun公司已推出自行设计的基于AMD64的工作站和伺服器,并随机附带Solaris 10。
dalvik是执行的时候编译+执行,安装比较快,开启应用比较慢,应用占用空间小
ART是安装的时候就编译好了,执行的时候直接就可以执行的,安装慢,开启应用快,占用空间大
dalvik是已经摺叠起来的脚踏车,每次骑都要先组装脚踏车才能骑
ART是已经组装好的脚踏车,每次骑直接上车就能走人
系统架构属于系统设计阶段,系统架构图只是这个阶段一个产物,要正确的、合理的画系统架构图需要全面的理解使用者需求以及业务流程,当理解了这些东西后,剩下的就是如何进行表达了,一般而言,可以参照RUP的用例驱动来进行逻辑架构,开发架构等设计工作,你的系统架构图可以反应在各个视图里面,我估计你所说的系统架构图是属于逻辑架构里面,比如分多少层,每层分多少模组等。
至于,绘制的工具,有很多很多。可以选择微软的visio,或者EA,rose,power designer等UML建模工具,当然,你甚至可以用PPT,Word来绘制。
当然,系统架构不是一日之功,需长期努力,跟经验和技术都有很大关系。
今天兴致来了,回复了这么多,不知满意不。
我不是高人,也谈不上指点,我只是一个很普通的程式码工人发表一下自己的看法哈~~
一个activity上多个surfaceview切换的做法是做游戏开发的,现在市面上大多数游戏都是采用的这种做法,并没有什么不妥,surfaceview使得画面更自由,拿到canvas后就不局限于安桌提供的控制元件了,纯自由发挥,各种游戏特效表现得更精彩。只是切换surfaceview时稍微麻烦点,需要写程式码来手动判断游戏状态和控制切换。
如果你只是做普通的应用,安桌提供的控制元件能满足你的需求,你就用普通的activity呗。用surfaceview多麻烦啊。把切换丢给系统来管理,省去不少事儿。如果你愿意麻烦,使用surfaceview来相互手动切换,也没什么问题的,放心去做吧。毕竟记忆体管理机制用的是JАVΑ的那一套,自动回收,用哪种架构都差别不大。
个人拙见,手动拼音打字,非ctrl+c/ctrl+v之流。望诸位看官别笑话俺哈~~
一个好的IT架构师,眼光不会仅仅停留在写程式码的层次上,在做开发的时间里,他们会积极学习各种知识,经验,培养自己的商业头脑,包括扩充套件自己各方面的资源,这些积累会为他们未来成为管理者或创业打下牢固的基础。
对于学习来说我们都是希望可以全面综合的掌握技术,这样才有助于你今后的整体发展。目前企业需要的不再是理论型人才了,而是实用技能型人才。
首先我们需要全面掌握专业实用的技术,其次加强个人整体素质的提升,这样才能符合目前企业的用人需求。如果我们选择了单科学习无疑是在起跑线上局限了我们的个人发展,或许短期内你觉得只是需要某项单独的技术,但是你有没有想过今后你不可能一直从事底层的程式设计师,看着和你同意时间进入公司的同事虽然技术和你不相上下,但是由于掌握的比较全面而被提升为专案主管、专案经理,或许到那个时候你又要为此再一次走进培训机构,这样也是耽误你个人的时间和精力,我相信你也希望自己今后可以步入管理层工作,有一个更好的发展。最好是掌握全面的技术,资料库,JAVA.NET.客户端技术。
就我接触到的说一下,我第一家公司专案比较小型是 springmvc+ spring+ hibernate(也有mabatis的),第二家公司,专案是大型的,所以好多是分散式的框架,spring、spring integration、dubbo、zookeeper、redis、mybatis等都有用到
JDE属于分散式架构,人和系统恕我孤陋寡闻,没听过阿