最新更新:第八章和第九章的选择题有所更改,最好自己做,我们答案都不统一
书上能找到明确答案的我就写了,没有明确答案的我就空着了自己找吧
书上能找到明确答案的我就写了,没有明确答案的我就空着了自己找吧
书上能找到明确答案的我就写了,没有明确答案的我就空着了自己找吧
(1)Android系统从(Android 2.3)版本开始全面支持大屏幕设备。
(2)在Android项目中用于存放图片、布局等资源的文件夹是(res)。
(3)以下关于R.class文件说法有误的是(引用该文件需要通过android.R的方式)。
(4)调试日志根据紧急程度划分了很多级别,其中错误日志对应的级别是(e)。
(5)常用于开发Android项目的集成化开发环境不包括(Dreamweaver ).
(1)Android操作系统的分层体系结构包括哪几层?分别实现什么功能?
应用程序层,应用程序框架层,运行环境与库层,Linux内核层。
应用程序层:Android系统应用程序的开发者所编写的应用程序。
应用程序框架层:应用程序层的开发者提供API,是应用程序的支持框架和调用接口
运行环境与库层:
Linux内核层:Android平台的核心系统服务依赖于Linux操作系统的内核
(2)Android 应用程序开发在项目创建时就实现了MVC,请说明Android项目如何实现了这一开发模式?
(1)android:layout_width属性可以被赋予值,不包括(@drawable引用)
(2)EditText控件属性android:inputType设置为密码框的取值是(textPassword)
(3)RelativeLayout布局管理中元素所特有的属性是(android:below).
(4)适配器ArrayAdapter(Context context,int resource,int text ViewResoureld,T[ ] objects)中参数resource的作用是(控件主键).
(5)下列关于Android应用开发中线程机制的说法无误的是(Android应用中UI线程是主线程,可以修改UI)
(1)Android应用开发中常用的布局管理器有哪些?各有何特点? P50
答:Android 提供了6种布局管理器,分别是线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(TableLayout)、帧布局(FrameLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout)。
特点:
线性布局:放入其中的控件按照垂直或水平方向来排列。
相对布局:元素可以使用他们彼此之间的位置关系,确定摆放位置。
表格布局:
帧布局:元素会叠加显示。
绝对布局:
网格布局:使用行列管理放入其中的元素,每个元素都放人指定单元格,同时支持跨行、跨列。
(2)Android应用开发中数据适配器的作用是什么?常用数据适配器有哪些? P59
答:数据适配器就是把不同格式的数据(数组或集合等)按统一格式填充给控件,使得这些控件在呈现数据时不用关心数据的差异性。经常用到的适配器类有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter和BaseAdapter
(3)列举常用适配器的构造方法,并说明参数含义 P59
答:ArrayAdapter常用构造方法如下:
ArrayAdapter(Context context,int resource,int textViewResourceld)
ArrayAdapter(Context context,int resource,T[ ] objects)
ArrayAdapter(Context context,int resource,int textViewResourceld,T[ ] objects)
ArrayAdapter(Context context,int resouree,List < T>objects).
ArrayAdapter(Context context,int resource,int textViewResourceld,List< T> objects)
参数context指上下文环境。resource是适配器的样式文件,可以使用“R.layout.布局文件”引用项目中的布局文件,使用“android.R.layout.布局文件”引用Android系统中的布局文件。textViewResourceld布局文件中的某个控件ID,适配器中的数据将被设置到该控件。objects是待填充的数据,可以是数组或List集合,数据也可以通过方法addAll添加到适配器中。
SimpleAdapter的构造方法如下:
SimpleAdapter(Context context,List extends Map< String, ? >>data,int resource,String[ ]from,int[ ] to)
参数context是上下文环境,data是填充数据,每一项数据对应一个Map,封装多个信息,如一项数据中可能包含文本信息、图片信息等。resource是样式文件.from和to两个参数共同决定数据的映射关系,from是Map中键的数组,to是样式文件中控件ID的数组,二者按照先后顺序将Map中的值设置给对应控件。
SimpleCursorAdapter的构造方法如下:
SimpleCursorAdapter(Context context,int layout,Cursor c,String[ ] from,int[ ]to,int flags)
参数context是上下文环境,layout是样式文件,c是数据库查询的结果集,from和to的作用如前所述。flags决定适配器的行为,取值为CursorAdapter.FLAG_AUTO_REQUERY或CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER,前者会重新请求数据,后者借助观察者更新数据,这需要注册内容观察者。
BaseAdapter是抽象类,需要继承并重写以下方法:
public int getCount(),得到数据的行数。
public Object getltem(int position),根据position得到某一项的记录。
public long getltemld(int position),得到某一项的ID.
publie View getView(int position,View convertView.ViewGroup parent),定义了适配器将要以什么样的方式显示所填充的数据,返回的View(视图)即作为每一项的显示样式。
(4)在Android应用开发中,如何实现在子线程中修改UI? P79
答:Handler类位于android.os包中,其作用是发送和处理Message对象、Runnable 对象。
Handler对象运行在主线程(UI线程)中,它与子线程通过Message对象来传递数据。当子线程需要更新UI时,使用Handler发送消息,并将UI需要显示的数据封装在Message对象中。
由于handler对象位于Activity中,属于主线程(UI线程)中的对象,因此可以直接获得Looper对象中的MessageQueue,可以直接发送和接收消息。根据空消息的标识(即Message类中what属性的取值)修改UI中控件的取值。
(5)请设计如下布局:
【这个题自己看吧】
(1)结束一个Activity的方法是(destroy())
(2)对Activity布局文件的绑定应该在生命周期的(onCreate())函数中进行。
(3)在Androd中、属于lntent的作用的是(可以实现界面间的切换,可以包含动作和动作数据).
(4)Fragment是(独立的一个部分,有自己的生命周期,但是必须加入Activity才能表现出来)
(5)lntent包括以下(action、data、extra、flag)
(1)Activity有等几个基本状态?P88
答:激活态、暂停态、停止态
(2)请描述Activity生命周期函数以及调用的先后顺序。P89
答:
onCreate(),当Activity被创建时调用。
onStart(),当Activity被创建后即将可见时调用。
onResume(),当Activity位于设备最前端,对用户可见时调用、
onPause(),当另外一个Activity遮挡当前Activity,当前Activity 被切换到后台时调用。
onRestart(),当Activity执行完onStop方法,又被用户打开时调用。
onStop(),如果另一个Activity完全遮挡了当前Activity时,该方法被调用。
onDestroy(),当Activity被销毁时调用。
顺序如图:(之前说要画图,不知道现在咋个操作)
(3)请简述什么是lntent及其在Android中的作用。P93
答:Intent是一个消息对象,并且可以通过它来启动应用程序的其他组件。通常通过Intent在组件之间传递消息有3种情况:启动Activity,启动Service,发送Broadcast.
(4)使用Fragment实现不同频道新闻信息列表的显示。(之前说过不考,不知道现在改变主意没)
(1)res目录下的文件名可以使用(小写字母、数字、下画线)字符。
(2)res/values目录下允许使用(strings.xml、colors.xml)文件
(3)在一个layout文件中想要包含menu.xml这个layout文件,可以使用(< include layout="@layout/menu"/>)方式实现。
(1)完成一个注册界面,其中界面控件外观样式设置为样式资源并调用。
(2)将以上界面中所有使用到的字符串定义在strings.xml中并调用
(3)将以上界面中所有控件的尺寸定义在dimens.xml中并调用
(4)在以上注册界面中添加一个默认头像ImageView控件,单击该控件时加载一个自定义动画集。
(1)在Android中使用Menu时可能需要重写的方法有(onCreateOptionsMenu)
(2)创建子菜单的方法是(addSubMenu)。
(3)下列关于如何使用Notification的叙述中不正确的是(在显示Notification时可以设置通知时的默认发声、振动等)
(4)使进度条变为水平方向的系统样式是(@android:style/Widget.ProgressBar.Horizontal).
(1)定义3个Fragment,在主Activity的底部添加3个RadioButton控件,实现单击RadioButton时切换主Activity中所加载的3个Fragment.
(2)定义一个显示当前所播放歌曲名称的Notification,并发送该通知。
(3)定义一个城市选择的对话框,并且当用户选择城市后,Toast弹出用户所选择的结果。
(4)定义一个生日选择对话框。
(1)使用startService方法启动的Service组件,Service不会执行的方法是(onBind(Intent intent))
(2)以下关于Service组件的描述中正确的是(使用startService 启动Service,必须以stopService停止)
(3)以bindService方法启动Service组件,以下关于启动者与Service之间关系的说法中正确的是(启动者销毁时,必须解除绑定Service,否则抛出异常)。
(4)以下关于远程Service的说法中正确的是(远程Service运行在独立的进程中,与本地应用程序无关)
(5)以下关于Android广播的说法中有误的是(动态注册指的是将广播接收器配置在AndroidManifest.xml文件中)
(1)简述Service的生命周期有哪两种,分别对应哪些生命周期方法。(这个题不太确定答案)P255
答:启动Service组件有两种方式,分别是执行Context中的startService 方法或bindService方法。
Service组件的两个生命周期方法如同所示。当执行startService方法时,实现左侧的生命周期过程:当执行bindService方法时,实现右侧的生命周期过程。
(2)简要说明startService与bindService两种方式对Service组件的影响有哪些不同。P225
答:使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。
(3)Android中的广播有哪些分类?使用什么方法发送这些广播?P238
答:Android系统中的广播可以分为普通广播(normal broadcasts)和有序广播(orderedbroadcasts),它们的发送方式和特性都有较大区别。普通广播使用sendBroadcast方法发送,有序广播使用sendOrderedBroadcast方法发送。
(4)对比普通广播和有序广播,请简要说明二者的区别有哪些。P238
答:普通广播有时也被称为一般广播,普通广播对于接收器来说是无序的、没有优先级的,每个接收器都无须等待即可以接收
到广播,接收器之间相互没有影响,因此广播效率较高。这种广播无法被终止,即无法阻止其他接收器的接收动作。
有序广播对于接收器来说是有序的、有优先级区分的。广播首先发送到优先级高的接收器,然后再传播到优先级低的接收器,并且,优先级高的接收器可以选择终止这个广播。
(1)SharedPreferences读写的文件类型是(XML文件)
(2)下列关于Android应用程序读写文件的说法中正确的是(Android应用程序在获取相应权限后,可以读写外部存储文件)
(3)获取SQLiteDatabase对象的方法不包括(继承SQLiteDatabase类,自定义实现方式)
(4)下列关于SQLiteOpenHelper说法正确的是(它是一个抽象类,必须被继承才能使用)
(5)下列关于ContentProvider说法有误的是(它和SQLiteDatabase一样,可以存储数据)