搜档网
当前位置:搜档网 › 四大组件及生命周期说明、组件布局

四大组件及生命周期说明、组件布局

四大组件及生命周期说明、组件布局
四大组件及生命周期说明、组件布局

一Android应用程序构成

Android应用程序没有唯一的启动入口,一个Android应用程序是由多个不同组件组合而成,一般情况下Android应用程序是由四种组件构成:Activity、Broadcast Receiver、Service和Content Provider。并不是每个Android应用程序都必须构建这4个组件,有些可能由这些组件组合而成。一旦确定了应用程序中需要的组件,就应该在AndroidManifest.xml中列出他们。AndroidManifest.xml是一个XML配置文件,它用于定义应用程序中需要的组件、组件的功能及必要条件等。应用程序的所有组件都必须在AndroidManifest.xml中声明。图1-1描述了Android应用程序的构成和工作流程。

图1-1 Android应用程序的构成和工作流程

1.1 Activity组件

对任何一个Android应用程序来讲,Activity类就是其核心组成部分。在应用程序中,一个Activity通常就是一个单独的屏幕。Activity 代表一个用户所能看到的屏幕,主要用于处理应用程序的整体工作,例如监听系统事件,为用户显示指定的View,启动其他Activity等。所有应用的Activity都继承于android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能[11]。图2-3是Activity生命周期:

图1-2 Activity生命周期

Activity拥有四种基本状态:

(1)Active/Runing:一个新Activity 启动入栈后,它在屏幕最前端,

处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

(2)Paused:当另一个Activity移至Activity栈的顶部时,当前的Activity将会接收到它已在栈中被下移的通知,同时onPause()方法被

调用。在onPause()中停止、保存和释放Activity数据。

(3)Stoped:当Activity 被另外一个Activity 覆盖、失去焦点并不

可见时处于Stoped状态。

(4)Killed:Activity 被系统杀死回收或者没有被启动时处于Killed 状态。

当一个Activity 实例被创建、销毁或者启动另外一个Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。

1.2 Broadcast Receiver组件

广播是一种广泛运用的在应用程序之间传输信息的机制。Broadcast Receiver 是对发送出来的广播行过滤接收并响应的一类组件。

Broadcast Receiver功能:Broadcast Receiver包含两部分功能,一个是发送广播消息,一个是接收广播消息。发送广播调用sendBroadcast()或sendOrderBroadcast()方法发送一个Intent对象(系统广播消息由系统内部广播发送,其实质是内部隐式调用了sendBroadcast或sendOrderBroadcast方法);接收广播采用接收器,即Receiver,它和Activity和Service等在架构上是平等的,都是为了完成某个任务,所不同的是,Receiver只能与sendBroadcast()或sendOrderBroadcast()发送的Intent匹配。

Receiver生命周期:Receiver没有界面,生命周期非常短,只有在执行onReceiver()方法中才有效,一旦执行完毕,生命周期也就结束了,当onReceiver ()方法在10秒之内如果没有执行完毕,系统就会认为程序无响应,所以不能做一些耗时的工作,也不要执行回调功能的异步方法,因为当异步方法回调时,对象可能已经销毁。

1.3 Service组件

Service是Android四大组件中与Activity最相似的组件,他们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它没有用户界面。它需要通过某一个Activity或者其他Context对象来调用。通过startService(Intent service)可以启动一个Service,通过Context.bindService()可以绑定一个Service。一旦Service被启动,它就与Activity一样。Service完全具有自己的生命周期。

图1-3所示为Service组件的生命周期:

图1-3 Service生命周期

1.4 Content Provider组件

数据在Android程序中是私有的,这些数据包括数据库类型和文件类型以及其他类型的数据。为了在应用程序之间交换数据,Android提供了不同应用程序之间进行数据交换的标准API——Content Provider。Content Provider作为Android 应用程序之间唯一的共享数据的途径,主要功能是存储并检索数据以及向其他应用程序提供访问数据的接口。这样系统和应用程序的数据就各自独立起来,以避免受到某些不正常程序或病毒的影响。当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可通过提供Content Provider来实现。其他应用程序就可以通过Content Resolver来操作Content Provider暴露的数据。

二Android应用程序的生命周期

在大部份情况下,每个Android应用都将运行在自己的Linux进程当中。当这个应用的某些代码需要执行时,进程就会被创建,并且将保持运行,直到该进程不再需要,系统需要释放它所占用的内存,为其他应用所用。

Android应用程序的生命周期不是由进程自身控制,而是由Android系统控制决定。Android系统会根据当前系统的负载以及应用程序对用户的重要性来决定生命周期的长短。图2-1所示是Android应用程序进程优先级。

关键优先级高优先级低优先级

图2-1 Android应用程序进程优先级

当一个Intent Receiver在它的onReceiveIntent()方法中,接收到一个intent 后,就会从这个方法中返回。而一旦从这个方法返回后,系统将会认为这个Intent Receiver不再处于活动状态。从而,系统随时会销毁这个进程,收回内存,并中止其中还在运行的子线程。解决办法是在Intent Receiver中,启动一个Service,这样系统就会知道在这个进程中,还有活动的工作正在执行。

为了决定在内存不足情况下销毁哪个进程,Android会根据这些进程内运行的组件及这些组件的状态,把这些进程划分出一个“重要性层次”。这个层次按顺序如下:

(1) 前端进程

前端进程是拥有一个显示在屏幕最前端并与使用者做交互的Activity(它的onResume已被调用)的进程,也可能是一个拥有正在运行IntentReceiver(它的onReceiveIntent()方法正在运行)的进程。在系统中,这种进程很少,只有当内存低到不足以支持这些进程继续运行,才会将这些进程销毁。通常这时候,设备已经达到了需要进行内存整理的状态,为了保障用户界面不停止响应,只能销毁这些进程。

(2) 可视进程

可视进程是拥有一个用户在屏幕上可见的,但并没有在前端显示的Activity (它的onPause已被调用)的进程。例如:一个以对话框显示的前端activity在屏幕上显示,而它后面的上一级activity仍然是可见的。这样的进程一般不会被销毁,除非为了保障所有的前端进程正常运行,才会被销毁。

(3) 服务进程

服务进程是一个由startService()方法启动的Service的进程。尽管这些进程对于使用者是不可见的,但他们做的通常是使用者所关注的事情(如后台MP3

播放器或后台上传下载数据的网络服务)。因此,除非为了保障前端进程和可视进程的正常运行,系统才会销毁这种进程。

(4) 后台进程

后台进程是拥有一个用户不可见的Activity(onStop()方法已经被调用)的进程。这些进程不直接影响用户的体验。如果这些进程正确完成了自己的生命周期,系统会为了以上三种类型进程随时销毁这种进程以释放内存。通常会有很多这样的进程在运行,因此这些进程会被保存在一个LRU列表中,以保证在内存不足时,用户最后看到的进程将在最后才被销毁。

(5) 空进程:

空进程是那些不拥有任何活动的应用组件进程。保留这些进程的理由是,作为一个缓存,在它所属的应用的组件下一次需要时,缩短启动的时间。同样,为了在这些缓存的空进程和底层的核心缓存之间平衡系统资源,系统会经常销毁这些空进程。

三 Android控件及布局

现在请大家想象一下:当打开一个程序时,第一眼看到的是什么?没错,答案是界面!那么在Android中界面是什么?我们知道Android程序由一个或多个Activity组成。而界面则显示在Activity中,Activity本身并不现实,也就是说Activity只是一个容器,那么一个容器里装有什么呢?如文本框、按钮、单选项、多选项、编辑框等等。这些组件我们统称为View,中文称之为“视图”。

在Android SDK中有一个android.view包,该包中是一些界面绘制相关接口和类。当然跟多的时候我们所说的View并不是指这个包而是指该包中的一个类——android.view.View。

View类实质上是屏幕上的一块矩形区域,既然是个矩形区域那么必定有宽和高。在这里先强调一下:在使用xml编辑界面的时候,一个组件必须有宽和高的属性,否则编译会出错。View类是所有的Widget和布局的基类,其实从名字上就可以看出来,如TextView(文本框)、EditText(编辑框)、ScrollView(滚动视图)等等。

我们平时开发中常用的一些Widget组件有:文本框(TextView)与编辑框(EditText)、按钮(Button)与图片按钮(ImageButton)、时钟(AnalogClock和Digital)、图像视图(ImageView)、滚动视图(ScroView)等等。

2.1文本框(TextView)与编辑框(EditText)的功能和用法

TextView直接继承了View,它还是EditText、Button两个UI组件的父类。TextView的作用就是在界面显示文本。

从功能上看,TextView其实就是一个文本编辑器,只是Android关闭了它的文本编辑功能。如果开发者想要定义一个可以编辑内容的文本框,则可以使用它的子类:EditText,EditText允许用户编辑文本框类容。

TextView提供了大量的XML属性,这些XML属性大部分即可适用于TextView,又可适用于EditText,但有少量的XML只能适用于其中之一。同学需要通过查阅TextView的XML属性及相关方法的说明,了解TextView的用法。

2.2按钮(Button)与图片按钮(ImageButton)组件的功能和用法

Button继承了TextView,ImageButton继承了ImageView。不管是Button 还是ImageButton它们功能很单一,主要是在UI界面上生成一个按钮,该按钮可以提供用户单击,当用户单击按钮时,按钮会触发一个OnClick事件。Button 与ImageButton的区别在于:Button生成的按钮上显示文字,而ImageButton上则显示图片。

按钮使用起来比较容易,可以通过为按钮指定android:background属性为按钮增加背景颜色或背景图片,但这种这种背景颜色或背景图片是固定的,不会随着用户的动作而改变。

2.3 Android布局

View类是所有可视化控件的基类,主要提供了控件绘制和事务处理的方法。创建用户界面所使用的控件都继承自View,如EditText、TextView、Button等。View及其子类的相关属性,既可以在布局XML文件中进行相关设置,也可以通过成员方法在Java代码中动态设置。

TableLayout类似行和列的形式管理控件,每行为一个TableRow对象,也可以为一个View对象,当为View对象时,该View对象将跨越该行的所有列。在TableRow中可以添加子控件,每添加一个子控件为一列。TableLayout布局中并不会为每一行、每一列或每个单元格绘制边框,每一行可以有0或多个单元格,每个单元格为一个View对象。TableLayout中可以有空的单元格,单元格也可以像HTML中那样跨越多个列。在表格布局中,一个列的宽度由该列中最宽的那个单元格指定,而表的宽度是由父容器指定的。在TableLayout中,可以为列设置三种属性:

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上架流程和盈利方式。 (二)职业能力目标

主要机械设备布置

第一节主要机械设备布置 1.施工现场现状 本工程现阶段场地较为平坦。现场存在几条水系,根据业主要求,施工过程中,现场布置须避开现存的几条水系。 2.施工现场平面布置原则及依据 2.1布置原则 根据天水市文明施工管理规定低碳施工导则,为保证施工现场布置紧凑合理,现场施工顺利进行,施工平面布置原则确定如下: 2.1.1合理布置现场,规划好施工道路和场地,减少运输费用和场内二次倒运。 2.1.2既要满足施工,方便施工管理,又要能确保施工质量、安全、进度和环保的要求,不能顾此失彼。 2.1.3应在允许的施工用地范围内布置,避免扩大用地范围,合理安排施工程序,分期进行施工场地规划,将施工道口交通及周围环境影响程度降至最小、将现有场地的作用发挥到最大化。 2.1.4施工布置需整洁、有序,同时做好施工废水净化、排放措施、防尘、防噪措施,创建文明施工工地,工地应作为美化和宣传天水的窗口,为天水市的城市建设添光彩。 2.1.5 现场材料堆放有序。储存环境适宜,措施得当。材料运输工具适宜,装卸方法得当,尽量避免和减少二次搬运。

2.1.6施工现场供水管网根据用水量设计布置,管径合理、管路简捷,采取有效措施减少管网和用水器具的漏损。设立循环用水装置,使用节水产品,有针对性的节水。 2.2布置依据 2.2.1招标文件有关要求。 2.2.2安全文明施工和环境保护要求。 2.2.3现场红线、临界线、水源、电源位置,以及现场勘察成果。 2.2.4总平面图、建筑平面、立面图。 3.垂直运输机械 3.1塔吊投入计划: 为保证施工顺利进行,各构件吊装安全,拟在本工程投入2台STT200型塔吊,吊装半径60m,最大起重能力12t,端部最大起重量2.2t。 3.2施工外用电梯: 3.2.1 外用电梯、竖井的选择: 外用电梯的设置主要考虑到最大范围的通向各层的工作面的和易于与结构拉接。根据现场情况,共布置2台SCD200型外用双笼电梯。 3.2.2 施工电梯、竖井的位置及布局: 在施工现场北侧施工电梯,以满足装修施工阶段砌筑及装修阶段的人员、材料及小型机具的垂直运输需要。

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

相关主题