您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Android应用程序架构
Android应用程序架构src/java原代码存放目录gen/自动生成目录gen目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。res/资源(Resource)目录在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图标或常量res/drawable专门存放图标文件res/layout专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于用户界面显示res/values专门存放应用使用到的各种常量,作用和struts中的国际化资源文件一样。AndroidManifest.xml功能清单文件这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。default.properties系统默认信息,一般是不需要修改此文件LinearLayout(线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)数据存储与访问文件使用文件进行数据存储首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。publicclassFileActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){...FileOutputStreamoutStream=this.openFileOutput(peking.txt,Context.MODE_PRIVATE);outStream.write(北京大学.getBytes());outStream.close();}}openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/packagename/files目录,如:/data/data/cn.peking.action/files/peking.txt,通过点击Eclipse菜单“Window”-“ShowView”-“Other”,在对话窗口中展开android文件夹,选择下面的FileExplorer视图,然后在FileExplorer视图中展开/data/data/packagename/files目录就可以看到该文件。openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:Context.MODE_PRIVATE=0Context.MODE_APPEND=32768Context.MODE_WORLD_READABLE=1Context.MODE_WORLD_WRITEABLE=2Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本高身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPENDContext.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。如果希望文件被其他应用读和写,可以传入:openFileOutput(peking.txt,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/packagename/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有这样其他程序才能正确访问。读取文件内容如果要打开存放在/data/data/packagename/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。FileInputStreaminStream=this.getContext().openFileInput(peking.txt);Log.i(FileTest,readInStream(inStream));readInStream()的方法请看本页下面备注。或者直接使用文件的绝对路径:Filefile=newFile(/data/data/cn.peking.action/files/peking.txt);FileInputStreaminStream=newFileInputStream(file);Log.i(FileTest,readInStream(inStream));注意:上面文件路径中的“cn.peking.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。Activity还提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于获取/data/data/packagename/cache目录getFilesDir()方法用于获取/data/data/packagename/files目录把文件存放在SDCard使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。SDCard是干什么的?你可以把它看作是移动硬盘或U盘。在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:在Dos窗口中进入androidSDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img:mksdcard2048MD:\AndroidTool\sdcard.img在程序中访问SDCard,你需要申请访问SDCard的权限。在AndroidManifest.xml中加入访问SDCard的权限如下:!--在SDCard中创建与删除文件权限--uses-permissionandroid:name=android.permission.MOUNT_UNMOUNT_FILESYSTEMS/!--往SDCard写入数据权限--uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){FilesdCardDir=Environment.getExternalStorageDirectory();//获取SDCard目录FilesaveFile=newFile(sdCardDir,“peking.txt”);FileOutputStreamoutStream=newFileOutputStream(saveFile);outStream.write(北京大学.getBytes());outStream.close();}Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:FilesdCardDir=newFile(/sdcard);//获取SDCard目录FilesaveFile=newFile(sdCardDir,peking.txt);//上面两句代码可以合成一句:FilesaveFile=newFile(/sdcard/peking.txt);FileOutputStreamoutStream=newFileOutputStream(saveFile);outStream.write(北京大学test.getBytes());outStream.close();使用SAX或者DOM或者pull读取XML文件在Android平台上可以使用SimpleAPIforXML(SAX)、DocumentObjectModel(DOM)和Android附带的pull解析器解析XML文件。下面是本例子要解析的XML文件:文件名称:peking.xml?xmlversion=1.0encoding=UTF-8?personspersonid=23name李明/nameage30/age/personpersonid=20name李向梅/nameage25/age/person/persons例子定义了一个javabean用于存放上面解析出来的xml内容,这个javabean为Person,代码请见本页下面备注:使用SAX读取XML文件SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。下面是一些ContentHandler接口常用的方法:startDocument()当遇到文档的开头的时候,调用这个方法,可
本文标题:Android应用程序架构
链接地址:https://www.777doc.com/doc-6496813 .html