查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
一、请谈一下Android系统的架构
android系统架构分为四层,从下层到下层分别是:应用程序层、应用程序框架层、系统运行库层及Linux内核层
二、谈谈android经常使用的五种布局
FrameLayout(框架布局):放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确实的位置,下一个子元素重叠覆盖上一个子元素,适合浏览单张图片
LinearLayout(线性布局):应用程序中最经常使用的的布局方式,重要提供控件水平或者垂直排列的模型,每个子组件都是以垂直或水平的方式来定位(默认是垂直)
AbsoluteLayout(绝对布局):采用坐标轴的方式定位组件,左上角是(0,0)点,往右X轴递增,往下Y轴递增,组件定位属性为android:layout_x和android:layout_y来肯定坐标
RelativeLayout(绝对布局):根据另外一个组件或是顶层父组件来肯定下一个组件的位置,和CSS里面的类似
TableLayout(表格布局):类似Html里的Table。应用TableRow来布局,其中TableRow代表下一行,TableRow的每一个视图组件代表一个单元格
三、谈谈Android提供的五种数据存储方式
1.应用SharedPreferences存储数据:它是android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。只能在一个包内应用,不能在不同的包之间应用。
2.应用文件存储数据:文件存储方式是一种较经常使用的方法,在android中读取/写入文件的方法与java中实现I/OR的程序是完整一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。
3.SQLite数据库存储数据:SQLite是android所带的一个标准的数据库,它支撑SQL语句,这是一个轻量级的嵌入式数据库
4.应用ContentProvider存储数据:重要用于应用程序之间停止数据交换,从而可以让其他应用保存或者读取此ContentProvider的各种数据类型
5.应用网络存储数据:通过网络止提供给我们的存储空间来上传(存储)和下载(获得)我们存储在网络空间中数据信息
四、谈谈android中Activity、Intent、ContentProvider、Service各有什么区别
Activity(活动):是最基本的android应用程序组件。一个activity就是一个单独的屏幕,每一个activity都被视为一个独立的类,并且从activity基类继承而来。
Intent(意图):望文生义,它的作用是描述应用想做什么,最重要的部分是动作和动作对应的数据。
ContentProvider(内容提供器):android应用程序可以将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。当你想将你的应用数据和其他应用同享时,内容提供器就能够发挥作用了。
Service(服务):拥有一段较长生命周期且没有用户界面的程序。
五、谈谈View、SurfacecView、GLSurfaceView有什么区别
View是最基础的,必须在UI主线程内更新画面,速度较慢
SurfaceView是View的子类,类似应用双缓机制,在新的线程中更新画面,所以刷新界面的速度比View快
GLSurfaceView 是SurfaceView的子类,openGL专用的
六、Adapter有什么作用?罕见的Adapter有哪些?
adapter是连接后端数据和前端显示的适配器接口。罕见的Adapter有:ArrayAdapter、BaseAdapter、CursorAdapter、HeaderViewListAdapter、ListAdapter、ResourceCursorAdapter、SimpleAdapter、SimpleCursorAdatper、SpinnerAdapter、WrapperListAdapter等。
七、AndroidManifest.xml文件中包含哪些信息?
manifest:根节点,描述了AndroidManifest.xml中所有的内容。
package(包名):指定为本应用java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此定名。本包名应该在Android系统运行时唯一。
certificate(认证):指定本应用程序所授予的信任级别,现在有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不再的权限。
permission-group(权限级):权限级的定义是为了描述一级拥有共同特性的权限。
permission(权限):权限用来描述是否拥有做某件事的权力。Android操作系统中权限是分级的,分为:普通级别(Normal)、危险级别(dangerous)、签名级别(signature)和系统/签名级别(signature or system)。系统中所有预定义的权限根据作用的不同,分别属于不同的级别。对于普通和危险级别的权限,我们称之为低级权限,应用请求即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能请求。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。系统应用可以应用任何权限。权限的声明者可无条件应用该权限。
permission-tree(权限树):权限树的设置是为了统一管理一级权限,声明该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时用PackageManager.addPermission()方法动态添加。
uses-permission:应用须要的权限应该在此处请求,所请求的权限应该被系统或某个应用所定义,否则视为无效请求。同时,应用权限的请求须要遵守权限授予条件,非platform认证的应用无法请求高级权限。
uses-sdk:标识本应用运行的SDK版本。高兼容性的应用可以疏忽此项。
application:android应用内最高级别(top level )的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。application将在应用启动时最先被加载,并存活在应用的全部运行时生命周期。因此一些初始化的任务适合在本模块实现,Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用以后是否应该被加载。
在AndroidManifest.xml文件中,运行时模块的定义都作为本模块的子元素。当运行时模块被调度时,如果应用没有启动,将首先启动应用停止初始化,然后调度对应模块。
activity:它是application模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零到多个其他运行时模块,activity也一样。activity也包含了许多定义它任务状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面须要参加所在包名。activity通过增长intent-fliter来标识哪些intent可以被处理,同时intent也是调度activity的重要参数。
receiver:它是application的运行时子元素。receiver通过增长intent-fliter来标识它须要接受哪些intent。当收到intent后,receiver将根据不同的intent停止不同的处理。当一个intent收回后,所有注册了该intent的receiver都将会收到,系统根据receiver在系统中的注册顺序顺序发送。当一个receiver处理完该intent后,系统才会向下一个receiver发送。当一个receiver有多个未接收的intent时,将按照intent发送的顺序顺序接收。
service:它也是application的运行时子元素。service属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。
provider:它也是application的运行时子元素。它继承于ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。如果应用答应外部应用拜访/管理它的用户数据,provider是android平台提供的最好方式。
activity-alias:望文生义,是已有activity的别名。
uses-library:标识应用启动所必须的同享库。
文章结束给大家分享下程序员的一些笑话语录:
AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!简直无所不拖!AdobeFlash滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!