文档库 最新最全的文档下载
当前位置:文档库 › 工程师淘金:开发Android主攻四大方向

工程师淘金:开发Android主攻四大方向

“苹果(Apple)公司的应用程序商店(app store)和谷歌(google) Android都为大家提供了更加容易赚钱的机会,但是我认为,为苹果应用程序商店开发软件的公司和个人赚的都只是小钱,利用Android的特性进行软硬件整合设计、再加上适当的艺术和工业设计才能赚到大钱。比较起来,苹果为大家提供的机会就像是芝麻,Android却能为大家带来一个汉堡。”在日前由创意时代主办的Android工作坊上,亚太地区Android促进会主席、台湾著名架构设计师高焕堂与参与工作坊的上百名嘉宾分享了他利用Android、整合软硬件设计以及工业设计赚大钱的思路。高焕堂介绍,由于Android兼具开放与兼容性的创意空间,因此十分适合通过软硬件结合的创新设计打开产品市场,赚取软件开发之外的更多利益。

主攻方向一:HAL层让大家尽情开辟“自留地”

“我将Android称为开放的系统而不是开源,为什么?我们拿另外一个开源系统——由诺基亚和Intel共同推出的Meego来比,Meego跟Android到底有什么差别?Meego虽然是诺基亚和Intel推出的,但是却交给了Linux基金会来主导,Linux基金会主导就必然会要求无论是深圳或者台湾硬件厂所设计的驱动程序开源,这也正是Android跟meego最大区别。Android从来不要求台湾或韩国、深圳所做的驱动程序百分之百开源。如果像meego这样要求硬件驱动也开源的话,你的一些创新的想法和功能基本上也就等于是开放了,这样大家就失去创新的动力了,允许保留硬件驱动的封闭就会给很多厂商不断去创新的动力。” 高焕堂表示,开放是指Android本身内核是开源、但整套系统又不是完全的开源,Android允许开发人员在硬件驱动的上保密,因此企业可以在这一层级开发个性化的应用或者形成自身独特的优势,然后再通过这些独特的、个性化的设计获取市场。

那么Android是如何做到这一点呢?高焕堂介绍,这么多硬件厂商支持Android的关键点在HAL这一层,“HAL到底是什么?HAL翻译过来就是硬件抽像层,是谷歌应厂商…希望不公开源码?的要求下,所推出的新观念,谷歌创造出的HAL框架就像一个万里长城,它把上层(包括虚拟机、Android系统服务层、上面的应用程序层),跟驱动和应用的设计分离,让Android开发不至过度依赖Linux kernel。在这样的基础上,厂商自己所做的东西归你自己所有,你愿意怎么改就怎么改,这样就留给了硬件厂商一个自己控制的区域,你的设计空间就在这里形成。”

“Android这样做可以说是冒着被Liunx大家长逐出家门的风险,我们看到Liunx官方网页不久前已经去掉了Android的东西,但google并没有妥协,他还是要去这样做。因为只有硬件驱动的私有化才为不同层面上的厂商带来更多的赚钱机会,大家都能赚钱才能使Android不断的发展壮大。”高焕堂表示,正是因为Android拥有这样开源却又允许相对保留的特点,才吸引了摩托罗拉、HTC、三星、华为等无数一流硬件厂商以及深圳本土很多手机、消费电子甚至汽车电子、工业电子厂商的踊跃支持。

主攻方向二:没钱就改版,改版就有钱

Android的另外一个特点兼容性则是指系统本身对更多硬件的包容、更多创意的包容,“我说的兼容性可能和软件开发人员理解的兼容性不同,这里的兼容性是指的对厂商开发的新硬件、新创新、新功能的支持,而不是不同版本Android对同一个程序的包容,甚至相反,很多低版本的程序可能无法在更高版本的Android上运行。”高焕堂认为,这样的特点或许会让部分软件开发人员觉得有些辛苦,但也恰恰是这样的特点给大家带来了更多赚钱的机

会。“Android兼容性表示它可以支持更多硬件和功能,这也是不仅仅是手机厂商,TV、机顶盒、汽车、医疗甚至工业厂商也都愿意加入进来的原因,而Android版本的快速更新说明它生命力的活跃,每次改版都能为大家带来更多推出新产品的机会。”

“我们可以把整个Android生态系统看成一棵有生命的树,兼容硬件和创新功能是树根,Android系统本身是树干,大家开发的产品是树枝,开发的软件和应用是树叶。那么不断的加入新的硬件和功能就意味着树根不断的长大,Android改版就是树干在不断长大,大家开发出更多产品更多软件就是树枝树叶在不断长大。我们不能期待树根树干都不变,不变如何又有创新的机会?不变又如何有设计空间?不变如何长出更多的树枝树叶?所以Android改版是这个生态系统具有生命力的象征,我们要欢迎Android快速改版,这样带给深圳、带给亚太地区大家都是机会。”高焕堂表示,这里的机会并不是指简单的软件开发,而是整个生态系统更新带来的机会,比如ipad、iphone4就是iPhone OS升级为苹果带来的机会,“但是苹果平台改版带来的利益大部分被他自己拿走了,虽然也有部分软件开发人员获利,但相比苹果赚的钱都是芝麻,因为苹果本身平台是封闭的,你不可能拿他的OS 做产品;而Android就不同,他改版的话,不但软件开发上可以赚点芝麻,结合上硬件设计和工业设计做产品的人就可以赚到牛肉和起司,赚到整个汉堡。”

主攻方向三:去写主动型API,掌握主导权

高焕堂表示,传统做硬件、软件最大毛病在于大部分时候是被动的,是提供功能给别人调用,这样就只能赚一个辛苦钱。而利用Android的一些特性来设计主动型API的时候,主导权就握在了自己的手中。“比如google的AP引擎,他定义的API可以让全世界给他写AP,类似的还有facebook,为什么他们敢开放给别人进去写AP?这就像一个传统的四合院,原来是封闭的,现在他开放的把四合院门打开,让每个人进去露营、你需要用的东西他统统帮你,还有水电全部用他的,但是他要收租金。这叫做他掌握了API,API主控权在他手上,所以他敢开放。如果一个被动API,我们只是写了一大堆功能给人家调用,这样我们是被掌握,被掌控就不敢开放。当拥有主动型API,我们就敢开放。”

那么什么叫主动型API?怎么设计出主动型API?“举一个例子,Android出来的时候,大家把它看成是另外一个平台,却没有看到它背后的意义。我们可以来看看他里边的Servlet 技术,他就是提供几个基类,让你来写指令,基类是他自己写的,定义的这个接口是由他自己定的,然后我们写指令去实现那个接口,在这种情况之下他就是一个主动型API,我们是处于一个被动的角色。处于被动角色的话,大家赚钱的途径就很少。”高焕堂表示,“这样我们就必须去思考,我们如何设计主动的API?这里我想到了一个十分有趣的例子,就是汉献帝和曹操,在当时,汉献帝往下面下圣旨的时候要经过曹操,这个接口是曹操定的,去实现汉献帝圣旨的人已经看不到汉献帝。我们也可以从这样的角度出发,在设计API时候把Android的接口包起来,我们变成挟天子以令诸候。”

主攻方向四:设计云计算中的专卖连锁店

“就像上边说的,我们要把Android看成是一个产业,而不是一个产品。Android要跟硬件搭配、跟云端计算搭配,这样才能带给Android更大的空间。接下来,Android还要跟设计整合,将设计的元素、美学、哲学、中华文化纳入进来,才能让Android进入每一个家庭。”高焕堂表示,要赚到整个汉堡就需要考虑更多的整合,“比如原来设计界在设计餐厅、

设计桌子、车子的时候都没有把软硬整合这样一个元素考虑进去,所以我们现在的IT业者要主动告诉他现在我们可以在桌子加芯片和软件,让桌子会跑会自动适应使用者习惯和要求,还可以将Android做成是一种服务,跟家庭、跟汽车、跟休闲做一些结合,再把设计和艺术文化放进来,就可以让我们产出高附加价值的产品。我们可以买软件送硬件,或者买硬件送软件,也可以做一个云端整合来卖服务,实在不行还可以去卖广告,所以有很多机会。”

“那么如何与云计算和设计结合呢?我们大部分企业都没有做云的力量,但是我们可以做一些端的创新。云就像是百货公司,因为它开放别人进来,所以百货公司就是自己不卖东西,但是开放给很多专柜进来卖东西,所以称为云叫做百货公司。百货公司里头就可以开很多品牌,所以各位就有很多机会了。当云端整合的时候就有很多机会,如果你有能力像阿里巴巴一样做百货公司,那也不错。如果没有你也可以卖香水、卖咖啡。这些东西,每个店面就要自己去设计,所以设计创意的空间又来的,设计的越好,客人越多。云端整合之后,你又发现有很多的机会。现在都在做云的时候,赶快去开连锁店。”高焕堂介绍,”以前大家都认为是云在控制端,但是就从两岸硬件产业来讲,我们是希望我们的端控制云,我们可以设计出很好的软硬件结合的商品来开专卖店,这个时候云就是我们端的物流中心,为我们赚钱。”

“什么叫做连锁店呢?比如说一些医疗的应用,深圳跟台湾在这方面的整合一直表现非常良好,现在我们也有一些设备出来,例如医护人员专用的MID,它需要独特的外观设计(适合医疗场合、并且可以随身放入白大褂的口袋)、独特的软硬整合(更多数据管记录和管理)、独特的创意空间(贴身化的定制服务)。这样的一个产品不但整合了软件、硬件、云端,还加入了设计和文化的元素,从而为企业带来了更多的利润。”高焕堂表示,“在今后的产品设计中,需要更多的从服务角度、从赚钱角度、从商业角度,来让通信、内容、设计、软件、硬件等方面的人员共同参与进来,我们也希望两岸可以把这些做很好的整合,最终让我们中华民族的产品和文化传播到世界各个角落。”

Android四大组件

Android四大组件 Android开发平台是开放的平台,而位于四层框架顶端的应用开发,必然涉及到Android组件。本文将为大家详细介绍Android组件。 组件(Component),在谈及所谓架构和重用的时候,是一个重要的事情。很多时候都会说基于组件的软件架构,指的是期望把程序做乐高似的,有一堆接口标准封装完整的组件放在哪里,想用的时候取上几个一搭配,整个程序就构建完成了。 在开篇的时候就在说,Android是一个为组件化而搭建的平台,它引入所谓Mash-Up的概念,这使得你在应用的最上层,想做的不组件化都是很困难的一件事情(底层逻辑,好吧,管不了...)。具体说来,Android有四大组件四喜丸子:Activity、Service、Broadcast Receiver、Content Provider。 Activity 做一个完整的Android程序,不想用到Activity,真的是比较困难的一件事情,除非是想做绿叶想疯了。因为Activity是Android程序与用户交互的窗口,在我看来,从这个层面的视角来看,Android的Activity特像网站的页面。 首先,一个网站,如果一张页面都没有,那...,真是一颗奇葩。而一张页面往往都有个独立的主题和功能点,比如登录页面,注册页面,管理页面,如是。 在每个页面里面,会放一些链接,已实现功能点的串联,有的链接点了,刷,跑到同一站点的另一个页面去了;有的链接点了,啾,可能跳到其他网站的页面去;还有的链接点了,恩...,这次没跑,但当前页面的样子可能有所变化了。这些模式,和Activity给人的感觉很像,只不过实现策略不同罢了,毕竟Android这套架构的核心思想,本身就来自源于Web的Mash-Up概念,视为页面的客户端化,也未尝不可。 Activity,在四大组件中,无疑是最复杂的,这年头,一样东西和界面挂上了勾,都简化不了,想一想,独立做一个应用有多少时间沦落在了界面上,就能琢磨清楚了。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。对于开发者而言,就需要派生一个Activity的子类,然后埋头苦干上述事情。对于Activity的更多细节,先可以参见:reference/android/app/Activity.html。后续,会献上更为详尽的剖析。 Service 服务,从最直白的视角来看,就是剥离了界面的Activity,它们在很多Android的概念方面比较接近,都是封装有一个完整的功能逻辑实现,只不过Service不抛头露脸,只是默默无声的做坚实的后盾。 但其实,换个角度来看,Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。

Android程序设计教程教学大纲

《Android 程序设计课程》课程教学大纲 一、课程基本信息 二、理论教学内容及基本要求

1 Android 操作系统 本章主要对Android 的发展、特点、环境搭建和体系结构进行简要介绍。并且讲解了JDK、Eclipse、Android SDK 软件的下载及安装的基本知识。对Android 应用程序进行解析,提高读者对程序的创建、目录的结构、资源的管理以及对程序权限的理解。最后讲解如何调试Android 程序。 2 Android 生命周期与组件通信 本章主要讲述了Android 生命周期和组件之间的通信。生命周期主要讲述了Android四大组件之一的Activity 生命周期, 包括生命周期函数、栈结构和基本状态三方面。组件的通信靠Intent 实现, 以及Intent 基本构成。 3 Android 用户界面设计 本章主要从Android 用户界面开发出发, 讲述了开发过程中经常使用到的控件, 包括菜单、常用基础控件、对话框与消息框。界面中控件的结构及位置等需要通过有效的界面布局控制, Android 中提供了5 种界面布局格式, 即线性布局、相对布局、表格布局、绝对布局和框架布局。界面中还有一种必要的操作处理———外部操作的响应, 通过有效的事件机制完成。 4 Android 数据存储与交互 本章主要讲述了Android 数据存储与交互方面的内容, 系统中数据交互主要通过五种方式实现, 共享优先数据机制、SQLite 数据库、File 文件机制、内容提供器控件和网络存储。其中在应用程序中最常用也是最有效的数据交互方式是使用SQLite 数据库。 5 Android 后台服务与事件广播 本章主要讲述了Android 后台服务、事件广播和常驻程序。后台服务由系统提供的Service 组件实现, 可分为本地服务和远程服务。事件广播机制主要依靠BroadCast Reciver 组件实现。常驻程序AppWidget又称为窗口小部件, 是在HomeScreen上显示的小部件, 开发时常用AppWidgetProvider 和AppWidgetProviderInfo 类实现。 6 媒介与网络 本章介绍了Android 平台下通过程序实现音频、视频播放等操作。分别介绍了从源文件播放、文件系统播放和流媒体播放等方式。并且介绍了Android 图形绘制与特效, 包括图形的平移、旋转及缩放等操作, 保存指定格式图形文件。编写专业的绘图或控制图形动画的应用程序。以及如何使用Android 手机中内置的高性能WebKit 内核浏览器浏览网页, 使用HTTP 和URL 获得网络资源等内容。 7 Android NDK 本章介绍了Android NDK 的相关知识, 从NDK 的简单介绍到开发环境的

(带答案)Android复习资料

选择题 1. 下面不是Android四大组件之一的(B ) A. Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中配置 D. 动态注册需要在应用退出时候接触广播的注册。 3. 下面关于BroadcastReceiver错误的是(B): A. BroadcastReceiver有两种注册方式,静态注册和动态注册。 B. BroadcastReceiver必须在AndroidMainfest文件中声明 C. BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用。 D. 广播发送的Intent都是隐式启动。 4. 下面关于谁先接收广播顺序错误的是(B) A. 有序广播,优先级高的先接收 B. 有序广播,同优先级的动静态广播接收器,静态优先于动态。 C. 有序广播,同优先级的动态广播接收器,先注册的大于后注册的。 D. 普通广播时,无视优先级,动态广播接收器优先于静态广播接收器 5. 下面关于广播说法错误的是(B) A. 广播分为有序广播和无序广播 B. 使用abortBroadcast方法可以中断所有广播的传递。 C. 广播注册方式分为动态和静态

D. sendOrderBroadcast用来向系统广播有序事件,sendBroadcast()是用来广播无序事件。 6. 下列关于Intent启动组件说法错误的是(C) A.startActivity( ) B. startService( ) C. startBroadcastReceiver() D.startActivityForResult() 7. 对于广播的发送,Intent的启动方式是(B) A.显式启动 B. 隐式启动 C. A和B都可以 D. 以上说法都不正确。 8. 下面关于Notification的说法正确的是(D): A. NotificationManager man = new NotificationManager(); B. PendingIntent contentIntent= new PendingIntent(); C. RemoteViews contentView = new RemoteViews(); D. Notification notification = new Notification(); 9. 关于ContenValues类说法正确的是( A ) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型 10.在手机开发中常用的数据库是(A) A,SQLite3 B,Oracle C,Sql Server D,Db23

Android基础应用课程标准

《Android基础》课程标准 一、课程定位 本课程是计算机专业基于Java方向的Android应用层程序开发的一门专业核心课程。作为Java程序设计、数据库原理与应用等课程的后续课程,主要在于培养学生应用Android技术进行Android应用程序开发的能力,并培养其良好的编程规范和职业习惯。 二、课程目标 通过案例驱动的学习和综合训练,熟练掌握Android应用程序开发的基本知识和技能,并能结合Android中的常用控件和四大系统组件进行Android应用程序的开发,并为后续Android高级知识的学习做下铺垫。在课程的学习中,培养诚实、守信、坚韧不拔的性格,培养善于沟通表达、善于自我学习、具备团队协作的能力。并养成规范的编码、按时交付软件等良好的工作态度。 (一)知识目标 1.掌握Android开发环境的搭建;熟悉Android应用的基本框架,了解Activity、layout的关系; 2.指导学生进行需求分析报告的拟定以及实训报告的编写; 3.熟练掌握Android常用的UI组件的用法,熟练使用Android的UI组件来搭建用户界面;掌握Android 中用户事件处理的基本方法; 4.掌握APP系统分层架构的搭建; 5.熟练掌握AdapterView相关UI组件以及Adapter模式、常见Adapter的定义; 6.熟悉Activity、Service和BroadcastReceiver的生命周期方法,熟练掌握它们的用法 7.熟悉Intent的用法,熟练使用Intent的诸多属性用途及用法; 8.熟练掌握Service与广播机制的使用和工作原理,为应用开发打下基础; 9.掌握SQLite的语法,熟练掌握Android SQLite 数据库的使用。能够用多种方式实现数据存储和数据 共享; 10.掌握Android的异步加载机制; 11.了解自定义控件的实现原理并掌握自定义技巧。 12.了解Android应用程序的屏幕适配、国际化方式及APP上架流程和盈利方式。 (二)职业能力目标

Android复习练习题

一、单选题 退出activity对一些资源以及状态的操作保存,可以在生命周期 的哪个函数中进行( A ) A、onPause() B、onCreate() C、onResume() D、onStart() Android项目工程下面的assets目录的作用是什么( B ) A、放置应用到的图片资源。Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到apk里面 C、放置字符串,颜色,数组等常量数据res/values D、放置一些与UI相应的布局文件,都是xml文件res/layout 下列不属于android布局的是( C ) A、FrameLayout B、LinearLayout C、BorderLayout D、TableLayout E、RelativeLayout Intent的作用的是( A ) A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据; B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失service C、实现应用程序间的数据共享contentprovider D、处理一个应用程序整体性的工作 下列哪个是AbsoluteLayout中特有的属性( B ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf RatingBar组件中不能用属性直接设置的是( D) A、五角星个数 B、当前分数 C、分数的增量 D、五角星的色彩 在手机开发中常用的数据库是( A ) A、,sqlLite B、Oracle C、SqlServer D、Db23 关于BroadcastReceiver的说法不正确的是( B ) A)是用来接收广播Intent的 B),一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收 C)对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 D)接收者声明的优先级别在的android:priority属性中声明,数值越大优先级别越高 使用MediaPlayer播放保存在sdcard上的mp3文件时( C ) A)需要使用方法创建MediaPlayer B)直接newMediaPlayer即可 C)需要调用setDataSource方法设置文件源D)直接调用start方法,无需设置文件源在android中使用RadioButton时,要想实现互斥的选择需要用的组件是(D ) A)ButtonGroup B)RadioButtons C)CheckBox D)RadioGroup 在多个应用中读取共享存储数据时,需要用到的query方法,是哪个对象的方法( A ) A)ContentResolver B)ContentProvider C)Cursor D)SQLiteHelper DDMS中Log信息分为几个级别( C ) A)3 B)4 C)5D)6 能够自动完成输入内容的组件是( D )

Android复习练习题

一、单选题 退出 activity 对一些资源以及状态的操作保存,可以在生命周期 的哪个函数中进行( A ) A、onPause() B、onCreate() C、onResume() D、onStart() Android 项目工程下面的 assets 目录的作用是什么 ( B ) A、放置应用到的图片资源。 Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C、放置字符串,颜色,数组等常量数据 res/values D、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 下列不属于android布局的是( C ) A、FrameLayout B、LinearLayout C、BorderLayout D、TableLayout E、RelativeLayout Intent 的作用的是 ( A ) A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据; B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 service C、实现应用程序间的数据共享 contentprovider D、处理一个应用程序整体性的工作 下列哪个是AbsoluteLayout中特有的属性 ( B ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf RatingBar组件中不能用属性直接设置的是( D) A、五角星个数 B、当前分数 C、分数的增量 D、五角星的色彩 在手机开发中常用的数据库是( A ) A、,sqlLite B、Oracle C、Sql Server D、Db23 关于BroadcastReceiver的说法不正确的是( B ) A)是用来接收广播Intent的 B),一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收 C)对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 D)接收者声明的优先级别在的android:priority属性中声明,数值越大优先级别越高 使用MediaPlayer播放保存在sdcard上的mp3文件时( C ) A)需要使用MediaPlayer.create方法创建MediaPlayer B)直接newMediaPlayer即可C)需要调用setDataSource方法设置文件源D)直接调用start方法,无需设置文件源在android中使用RadioButton时,要想实现互斥的选择需要用的组件是(D ) A)ButtonGroup B) RadioButtons C)CheckBox D)RadioGroup 在多个应用中读取共享存储数据时,需要用到的query方法,是哪个对象的方法?( A ) A)ContentResolver B)ContentProvider C)Cursor D)SQLiteHelper DDMS中Log信息分为几个级别( C ) A)3 B)4 C)5 D)6 能够自动完成输入内容的组件是( D )

Android应用开发经典面试题

Android应用开发经典面试题 1、Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相 关的食物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单 处理,转换成一条Notification,统一了Android的事件广播模型 2、请介绍下Android中常用的五种布局。 常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。 一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放 一点比较简单的东西。 二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局 (android:orientation=”vertical”)和水平布局(android:orientation=”horizontal”)。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。 三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。 四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主 要属性有:相对于某一个元素android:layout_below、android:layout_toLeftOf相对于父 元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。

Android四大组件的详细讲解

Android应用程序由一些零散的有联系的组件组成,通过一个工程manifest绑定在一起。在manifest中,描述了每一个组件以及组件的作用,其中有6个组件,它们是Android 应用程序的基石: Activities(活动)应用程序的显示层。每一个画面对应于你的应用程序,将会是Activity类的扩展。Activity使用Views去构建UI来显示信息和响应用户的行为。就桌面开发而言,一个Activity相当于一张Form。你在这章中将会学习到更多关于Activities。 Services(服务)Android应用程序中不可见的“工人”。Service组件运行时不可见,但它负责更新的数据源和可见的Activity,以及触发通知。它们常用来执行一些需要持续运行的处理,当你的Activity已经不处于激活状态或不可见。你将在第8章学习怎样创建Service。 Content(内容)提供共享的数据存储。Content Provider(内容提供器)用来管理和共享应用程序的数据库。在应用程序间,Content Provider是共享数据的首选方式。这意味着,你可以配置自己的Content Provider去存取其他的应用程序或者通过其他应用程序暴露的Content Provider去存取它们的数据。Android设备本身包含了几个Content Provider来访问像联系人信息等有用的数据库。你将在第6章学习怎样创建和使用Content Provider。 Intents(意图)简单的消息传递框架。使用Intent,你可以在整个系统内广播消息或者给特定的Activity或者服务来执行你的行为意图。系统会决定那个(些)目标来执行适当的行为。 Broadcast Receivers(广播接收器)Intent广播的“消费者”。通过创建和注册一个Broadcast Receiver,应用程序可以监听符合特定条件的广播的Intent。Broadcast Receiver 会自动的启动你的Android应用程序去响应新来的Intent。Broadcast Receiver是事件驱动程序的理想手段。 Notifications(通知)用户通知的框架。Notification用来在不需要焦点或不中断它们当前Activity的情况下提示用户。它们是Service或Broadcast Receiver获得用户注意的首选方式。例如,当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。在第8章里,你可以使用Notification来触发这些事件。 一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。

Android选择题集锦

下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是? 选择一项: a. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. b. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念. c. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例.而每一个DVM 不一定都是在Linux 中的一个进程,所以说不是一个概念. d. DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念. 题目2 下列选项哪个不是Activity启动的方法? a. goToActivity b. startActivity c. startActivityFromChild d. startActivityForResult 题目3 解析xml 的方式有() a. 字符器类型 b. 流方式 c. dom d. SAX 题目4 下列哪一个不属于Activity的生命周期方法? a. onInit( ) b. onStart( ) c. onStop( ) d. onPause( )

ANDROID应用开发试题

Android应用开发试题 一、选择题(每题2分,共30分) 1.下列不是手机操作系统的是?()D A.Android B.Window Mobile C.Apple IPhone IOS D.windows vista 2.Android的VM虚拟机是哪个?A A.Dalvik B.JVM C.KVM D.framework 3.AndroidVM虚拟机中运行的文件的后缀名为()C A.class B.apk C.dex D.xml 4.下列选项是Activity启动的方法有()ACD A.startActivity B.goToActivity C.startActivityForResult D.startActivityFromChild 5.下列哪个可做EditText编辑框的提示信息?()D A.android:inputType B.android:text C.android:digits D.android:hint 6.关于Activity的描述,下面哪个是错误的?AD A.一个Android程序中只能拥有一个Activity类 B.Activity类都必须在Androidmaniefest.xml中进行声明 C.系统完全控制Activity的整个生命周期 D.Activity类必须重载onCreate方法 7.关于widget(组件)属性的写法,下面哪个是正确的?ABC A.android:id=”@+id/tv_username” B.android:layout_width=”100px” C.android:src=”@drawable/icon” D.android:id="@id/tabhost" 8.下面哪个不是Android SDK中的ViewGroup(视图容器)?D A.LinearLayout B.ListView C.GridView D.Button 9.下列哪个不是Activity的生命周期方法之一?()B A.onCreate B.startActivity C.onStart D.onResume 10.MediaPlayer对象从停止状态到播放状态调用的方法是()AB A.prepare() B.start() C.reset() D.release() 11.下面说法错误的是()BC A.Android采用单线程模型 B.Android会默认会为线程创建一个关联的消息队列 C.Handler会与多个线程以及该线程的消息队列对应 D.程序组件首先通过Handler把消息传送给Looper,Looper把消息放入队列12.android中下列属于Intent的作用的是()C A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带D处理一个应用程序整体性的工作 13.关于应用程序的生命周期,一个Activity从启动到运行状态需要执行3个方

android面试题目--答案

Android笔试题 一、选择题 1. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行 (d) A、onPause() B、onCreate() C、 onResume() D、onStart() 2. android 中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 3. 下面的对自定style的方式正确的是(a) A、 B、 C、 fill_parent D、 4. android 关于service生命周期的onCreate()和onStart()说确的是(ad)(多选题) A、当第一次启动的时候先后调用onCreate()和onStart()方法 B、当第一次启动的时候只会调用onCreate()方法 C、如果service已经启动,将先后调用onCreate()和onStart()方法 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 5. Android项目工程下面的assets目录的作用是什么b A、放置应用到的图片资源。 B、主要放置多媒体等数据文件 C、放置字符串,颜色,数组等常量数据 D、放置一些与UI相应的布局文件,都是xml文件

Android期末考试复习试卷(仅供参考)

一、选择题(20分,每小题2分) 1、下列不是手机操作系统的是( D )。 A Android B Window Mobile C Apple IPhone IOS D Windows Vista 2、下列选项哪个不是Activity 启动的方法(B ) A startActivity B goToActivity C startActivityForResult D startActivityFromChild 3、下列哪个不是Activity 的生命周期方法之一(B ) A onCreate B startActivity C onStart D onResume 4、下列哪个可做Android 数据存储(A ) A SQlite B M ySql C Oracle D DB2 5、下列哪个可做EditText编辑框的提示信息( D ) A android:inputType B android:text C android:digits D android:hint 6、Math.ceil(99.1) 的结果是(B ) A 99 B 100 C 99.1 D 99.0 7、android 中下列属于Intent的作用的是(C) A实现应用程序间的数据共享 B是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D处理一个应用程序整体性的工作 8、关于res/raw 目录说法正确的是A A这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B这里的文件是原封不动的存储到设备上会转换为二进制的格式 C这里的文件最终以二进制的格式存储到指定的包中 D这里的文件最终不会以二进制的格式存储到指定的包中 9、Math.round(11.5)等于多少(). Math.round(-11.5)等于多少( C) A 11 ,-11 B 11 ,-12 C 12 ,-11 D 12 ,-12 10、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A ) A onDestroy() B onClear() C onFinish() D onStop() 二、填空题(10 分,共10 题,每空1 分) 1、为了使android 适应不同分辨率机型,布局时字体单位应用( sp ),像素 单位应用( sp )和(dip ) 2、定义LinearLayout 水平方向布局时至少设置的三个属性:( android:orientation),(android:layout width)和(android:layout height) 3、layout 布局文件的命名不能出现字母(大写)

Android四大组件的ContentProvider实例——获取联系人

Android四大组件的ContentProvider实例——获取联系人 1.ContentProvider简述 ContenttProvider(以下简称CP)是为了获取不同应用之间的数据而诞生的组件,并且官方为常见的一些数据提供了默认的CP。例如,联系人、短信等。 CP的几点关键: Uri:是CP的标志符,是识别CP的唯一方式。 ContentResolver:对CP进行操作的类。 权限:有时候操作一些地方需要一些权限。 2.获取联系人实现思路

3.具体实现3.1 申请权限

android6.0不仅要在AndroidManifest.xml中静态申请,还需要在代码中进行动态申请。 静态申请 在AndroidManifest.xml中进行申请。 动态申请 动态申请的流程为:发起申请和申请结果。 发起申请: 主要使用requestPermissions(permission名字的数组,整型的自定义reques code)方法 注: 什么时候进行动态申请呢?版本大于等于6.0且当前页面没有这个权限。

request code 为自定义数值,例子中我定义了一个常量 int--PERMISSIONS_REQUEST_READ_CONTACTS,这个是为了在查看申请结果时判定用的。 private void showContacts() { //检验是否版本大于6.0,当前页面是否有这个权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { //发起申请 requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS); } else { //低版本直接运行,跳过动态申请。 readContacts(); } } 申请结果 重写onRequsetPermissionResult(int requestCode,String[] permissions,int[] grantResults)方法。

A03_a_Android应用框架的四大组件

A03_a_Android應用框架的四大組件?4個嫡系基類: Activity Service BroadcastReceiver ContentProvider Android母框架裡提供了4個一等公民(或稱為嫡系)的基類,包括: ●Activity: 處理UI互動的事情 ●Service:幕後服務(如硬件及Driver的服務) ●BroadcastReceiver: 接收訊息及事件處理 ●ContentProvider: 儲存共用資料 如下圖所示: 圖1 Android 框架裡的4個嫡系基類 基於這些基類,地頭蛇就可以撰寫AP子類,如下圖:

圖2 平台與應用兩種知識的結合 這4種應用子類都是由Android框架來負責創建(Create or New)其對象(Object)的。不過有趣的是: ●平台框架基類寫在先 ●應用子類寫在後 那麼框架事先又如何知道應用開發者後來撰寫的應用子類的名稱呢? 如果不知道應用子類的名稱,又如何創建應用子類的對象呢? 答案是:依賴AndroidManifest.xml文檔。例如: // AndroidManifest.xml

Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务

Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务 Service简介 Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作 Service的运行不依赖于任何用户界面,即使程序被切换到后台或者用户打开另一个应用程序,Service仍然能够保持正常运行,这也正是Service的使用场景。当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行 后台服务 后台服务可交互性主要是体现在不同的启动服务方式,startService()和bindService()。bindService()可以返回一个代理对象,可调用Service中的方法和获取返回结果等操作,而startService()不行 不可交互的后台服务 不可交互的后台服务即是普通的Service,Service的生命周期很简单,分别为onCreate、onStartCommand、onDestroy这三个。当我们startService()的时候,首次创建Service会回调onCreate()方法,然后回调onStartCommand()方法,再次startService()的时候,就只会执行一次onStartCommand()。服务一旦开启后,我们就需要通过stopService()方法或者stopSelf()方法,就能把服务关闭,这时就会回调onDestroy() 一、创建服务类 创建一个服务非常简单,只要继承Service,并实现onBind()方法 public class BackGroupService extends Service { /** * 綁定服务时调用 * * @param intent * @return */ @Nullable

AnjoyoAndroid07课后习题

AnjoyoAndroid07课后习题 一、选择题: 1.下面关于Service的描述有误的一项是()。 A、Service运行在主线程中,可以执行各种后台操作,比如数据计算、多媒体播放、下 载文件等等。 B、Service是不提供用户界面而在后台完成各种耗时操作的组件,译为“服务”。 C、Service与Activity一样,也是Android的四大组件之一,与Activity相同,也使用 Intent对象激活Service。 D、Service、Intent、Activity和ContentProvider被并称为Android的四大组件。 2.下面关于Service的说法不正确的一项是()。 A、Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功 能。 B、Activity比Service的优先级高,不会轻易被Android系统终止。 C、应用程序组件可以启动一个服务(Start a Service),即使用户切换到另一个应用程 序,它仍然会继续在后台运行。 D、一个组件还可以绑定到一个与它进行交互、甚至进行进程间通信(IPC)的服务(Bind a Service),比如处理网络交易、播放音乐、执行文件I / O操作的服务。 3.下列关于Service说法错误的一项是()。 A、Android中,Service有两种不同的使用方式,一种是以启动方式使用Service(Started Service),另一种是以绑定方式使用Service(Bound Service)。 B、需要在AndroidManifest.xml文件中注册,否则,Service根本无法启动。 C、以绑定方式使用Service,能够获取到Service对象,不仅能够正常启动Service,而 且能够调用正在运行中的Service实现的私有方法和属性。 D、为了使Service支持绑定,需要在Service类中重写onBind()方法,并在onBind()方 法中返回Service对象。 4.下列关于Service绑定说法有误的一项是()。 A、如果绑定成功,则会通过getService()获取Service对象,这样便可以调用Service中 的方法和属性。 B、如果绑定意外失败,会将Service对象设置为null,表示绑定意外失效,Service实 例不再可用。 C、绑定一个Service就可以开启并使一个Service处于运行状态。 D、以绑定方式使用Service时,调用者需要声明一个ServiceConnnection对象,但可以 不用重写它的onServiceConnected()和onServiceDisconnected()方法。 5.下面关于Service描述错误的一项是()。 A、取消绑定仅需要使用unbindService()方法,并将ServiceConnnection对象传递给 unbindService()方法即可。 B、以启动方式使用Service时,使用startService()方法的目的是回调onStart()方法。 C、以绑定方式使用Service时,使用bindService()方法的目的是回调onBind()方法,它 的作用是在Service和调用者之间建立一个桥梁。 D、一般会把要在应用程序被关闭后仍然需要执行的操作实现为一个绑定式的Service, 而将一些执行特定功能、执行周期短或在应用程序关闭后将要停止的操作实现为启动式

相关文档
相关文档 最新文档