1、Intent的Component属性的作用是什么,如何定义此属性?
component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再
执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
Component属性的作用是用来指定Intent的目标组件的类名称。如果Component这个属性被指定了的话, Intent的其它属性都是可选项,Android会直接使用Component指定目标组件,而不再执行其它查找过程。
在使用时,需要先创建一个ComponentName对象,然后将它设置成Intent对象的Component的属性。通过setComponent()、setClass()和setClassName()三种方法都可以设置组件的名称,通过getComponent()方法则可获得设置项。
2、发送广播时,可以通过sendCatagoryBroadcast()方法将Intent对象发送出去( ). (错)
3、Android是什么?一种操作系统
4、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是 ( )
DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
5、Android操作系统最早由哪个公司研发?( ) Android公司
6、下列中不属于手持设备的是( ) 机顶盒
7、下列不是手机操作系统的是()。Windows Vista
8、到目前为止,Android操作系统的最高版本是哪个? ( ) Android L
9、安装Android SDK时,可以通过( )在线安装或离线安装。A ndroid sdk manager
10、开发Android应用程序时,一般使用的计算机语言是( ) 。JAVA
11,
Canva类没有在AndroidManifest中正确申明sActivitys
12、对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent
映射给可以处理此Intent的Activity、IntentReceiver或Service (对)
Intent 可以传递 View对象(错)
Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦(对)
通过Intent可以删除程序(对)
13、下面退出Activity错误的方法是()。System.exit( )
14、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是( )。startActivityResult()
15、这是一个资源配置文件,下面描述正确的是? ( ) 这个shape文件是画一条虚线,实线段5dp,间隔3dp
16、Toast toast = new Toast(this); toast.setText("今天天气不错\n哈哈"); toast.show(); 上面代码的执行结果是什么( )。
代码会抛出异常,因为new出的Toast对象不能再使用setText方法来设置提示框文本
17、setOnTouchEvent 设置返回值为true 和 false有何区别?( )
返回true表示这个消息已经被处理结束,后续的handler不再接收到这个消息
18、下列哪个可做EditText编辑框的提示信息( )。android:hint
19、使进度条变横向的系统样式是( )
20、关于Android 事件机制与事件监听,下列说法不正确的有( )。
i.View类里的event listener是一个带有回调方法的接口,当UI里的组建是被用户触发时,这些方法会被系统框架所调用;(对)
ii.来自View.OnClickListener ,当点击这个Item(在触摸模式),或者当光标聚集在这个Item上时按下“确认”键,导航键,或者轨迹球,它会被调用;(对)
iii.来自View.OnLongClickListener ,当长按这个Item(在触摸模式),或者当光标聚集在这个Item上时长按“确认”键,导航键,或者
轨迹球,它会被调用;(对)
iv.来自View.OnFocusChangeListener ,当手移到或离开这个Item,它会被调用(对)
v.来自View.OnKeyListener,当光标移到这个Item,按下和释放一个按键的时候,它会被调用;(对)
vi.来自View.OnTouchListener,在这个Item的范围内触摸的时候,它会被调用;(对)
vii.来自View.OnCreateContextMenuListener,当上下文菜单被建立时,只需短按一下,它会被调用。(错)
21、关于对话框,下面说法正确的是( )。对话框的父类不是View
24、在android中使用Menu时可能需要重写的方法有( )。(1) onCreateOptionsMenu() (3) onOptionsItemSelected()
25、键盘事件处理方法中,以下哪个方法是用来处理键盘按键的释放事件的 ( )。keyReleased(int keyCode)
26、下面Android的存储方式中,除SharedPreferences外还有哪种方式是不可以将数据在不同应用间数据共享的( )。Files
27、当使用文件存储的时候,默认创建的文件会放在什么位置( )。app
28、关于SharedPreferences和文件存储数据描述正确的是( )。使用文件存储需要创建文件,而SharedPreferences的存储方式自动创建xml文件
29、使用SharedPreferences进行数据存储的时候,下面哪个方法是不参与的( )。edit()
30、使用SharedPreferences存储数据时,会创建一个什么类型的文件来进行数据存放( )。.xml文件
31、在程序中,使用SD的文件需要使用以下哪些权限( )。
32、下面哪种不是Android的存储方式( )。ContentProvider
33、通过SharedPreferences保存的数据存储在什么文件夹下( )。shared_prefs
34、对于一个已经存在的SharedPreferences对象setting,想向其中存入一个字符串"person",setting应该先调用什么方法( )。edit()
35、下列说法哪个不正确( )。
一个Activity的对象a1上弹出了一个模拟对话框形式的Activity的对象a2,按返回键后a1执行了onStart和onResume方法,a2执行了onPause,onStop和onDestroy方法;(错)
拥有android:configChanges="orientation|keyboardHidden" 标签的Activity在横竖屏转换时不会再执行onCreate方法;(对)
默认情况下对一个Activity的对象进行横竖屏切换,该对象的onCreate方法在每次切换时都会执行;(对)
一个界面上的EditText中输入文字后,再按下Home,该界面消失,等再回到该界面文字内容仍在,onCreate方法也不会执行。(对)36、下面布局中,哪个布局会把控件放在左上角,当添加新的控件的时候,将覆盖在前一个控件的上层,并且不能设计控件的位置( )。FrameLayout
37、以下有关RelativeLayout说法正确的是( )。这种布局适合横竖屏切换比较频繁的应用
38、关于RelativeLayout布局中,下面对属性描述不相符合的是( )。
android:layout_marginLeft="40px"表示当前控件左边空出40像素的空间;
android:layout_below="@id/aclock"表示当前控件放置于引用名为aclock的控件的下方
android:layout_centerInParent="true" 表示当前控件放置于父控件的横向和纵向的中央位置;
android:layout_alignParentTop="@id/mtop"表示当前控件和引用名为mtop的父控件顶端对齐(不符合)
39、关于RelativeLayout描述正确的是( )。该布局为相对布局,其中控件的位置都是相对位置。
40、在RelativeLayout布局中,有一个id为entry的EditText,目前有一个Button想放置在其左边,应为Button指定什么属性设置( )。android:layout_toLeftOf="@id/entry"
41、在一个相对布局中怎样使一个控件居中( )。android:layout_centerInParent="true"
42、在表格布局中,android:collapseColumns="1,2"的含义是: ( ) 在屏幕中,不管是否能都显示完,折叠1、2列
43、绝对布局中,android:layout_x 的含义有( )以手机左上为原点,组件显示到屏幕中的横向坐标值。
44、简述开发手机联盟?
45、以下哪一个类可以实现广播接收的功能( )。BroadcastReceiver
46、Android系统有哪些特点?
(1)应用框架可以重复使用,其组件也可以更换;(2)Dalvik虚拟机针对移动设备进行了优化;(3)优化的图形能力支持2D/3D图形(OpenGL ES 1.0);(4)集成了基于开源WebKit引掣的浏览器;(5)采用SQLite实现结构化数据存储;(6)多媒体支持多种音频、视频格式;(7)GSM Telephony(hardware dependent);(8)支持蓝牙Bluetooth,3G和WiFi;(9)支持照相机、GPS、指南针和加速度仪等传感器硬件;(10)丰富的开发环境,包括模拟机、调试工具、内存运行检测,以及为Eclipse IDE所写的插件。
47、在AndroidManifest.xml中注册一个广播,需要使用什么标签( )。
48、定义广播需要重写父类中的什么方法( )。onCreate
49、在程序中,发送广播的方法是以下哪一个( )。sendBroadcast
50、定义一个广播,需要继承哪个类(BroadcastReceiver)
51、简述Android应用程序的组成。
一般来说,Android 程序包含如下主要的组件类:活动(Activity);用于表现功能服务(Service);相当于后台运行的Activity广播接收器(BroadcastReceiver)——用于接收广播意图; Intent——用于连接以上各个组件,并在其间传递消息;ContentProviders实现不同组
(52)Dalvik虚拟机与Sun公司定义的标准虚拟机(JVM)有何不同?
1、Dalvik和JVM的首要差别是Dalvik基于寄存器而JVM基于栈,基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短;(2)Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能;(3)Dalvik 负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行;(4)不同于JVM运行Java字节码,Dalvik虚拟机运行的是其专有的文件格式dex,dex文件格式可以减少文件整体尺寸,提高I/O操作的类查找速度;(5)所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。
53、请谈一下Android系统的架构
Android系统采用了分层架构,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
54、Android开发环境搭建需要哪些主要步骤?
安装Java 安装Eclipse 安装Android SDK 安装Eclipse插件ADT
55、 Windows环境下如何检测已经安装成功Java?
写一个简单的java程序来测试JDK是否已安装成功:
public class HelloWorld{
public static void main(String[] args){
}
}
将以上代码保存为文档名为HelloWorld.java的文档。打开命令提示符窗口,进入到HelloWorld.java所在目录,键入下面的命令:javac HelloWorld.java
java HelloWorld
如果屏幕如图,能够正确输出且不提示错误,表示JDK开发环境配置完成。
56、什么是AVD,有哪些特点?
Android Virtual Device是一个经过配置的模拟器,可以模拟显示屏幕的大小、屏幕分辨率、触摸屏、轨迹球、键盘、GPS、声音播放、SD 卡支持,缓存区大小等。AVD也存在着缺点,不能模拟重力感应、麦克风等一些硬件设备,因此有时候也需要实体手机上运行和测试Android 应用程序。
57、什么是ADT?
Android Development Tools plugin (ADT) 是使用Eclipse进行Android移动应用开发的一个方便的开发、仿真测试平台。
58、在手机的实机上进行开发调试需要在手机上如何设置?
在手机上进行开发调试需要在手机上进行设置,选择设置—应用程序-开发-USB调试,之后USB连接开发计算机才能进行开发调试。
59、Activity,intent、Service和BroadCastReceiver之间是什么关系
60、Intent的Action、Category属性的作用是什么?
Action属性主要用来定义Intent要执行的抽象动作,它是一个字符串。使用时只需在程序中定义,并在要访问组件的子元素中声明就可以使用了。Category属性是对Action定义动作的补充,也是一个普通的字符串,通常两者结合使用。
在文件AndroidManifest.xml里, 元素中所配置的子元素的作用就是用于指定该Activity可响应的Intent。
61、Intent的Data、Type属性的作用是什么?
Intent的Data属性的作用是向Action属性提供操作的数据。Data属性接受一个Uri对象,此对象可以决定所要操作数据的类型及数据的具体值。
可以通过设置Type属性来显式指定特定类型数据(MIME)。一般Intent会根据数据本身对其数据类型进行判定,但是如果使用Intent的Type 属性进行设置,可以实现强制显式指定的类型而不再进行推导。
62、简述Intent的功能与作用。
Intent是Android中各种组件之间传送信息的“信使”。中文里Intent有“意图、目的”的意思,在这里仍兼有这样的含义,因为在组件之间导航的过程中,我们也需要使用Intent将意图一并传递过去。上一章中,在一个Activity里激发另一个Activity的例子中就体现了Intent的功能。
使用Intent的好处就是应用程序可以启动只具有某种特征的的组件,而不必指定某个具体的组件。Intent中可以封装不同组件之间进行导航的意图。这些意图需要通过Intent的属性来表现。
63、Intent的实现策略分为几种类型,请分别叙述。
Intent的实现策略即指Intent寻找组件的方法。这种策略分为两种:一种是直接Intent,也称为显式Intent。另一种是间接Intent,也
直接Intent方式需要通过指定Intent的Component属性(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)来实现。这样应用就会对应的启动所指定的具体组件类。在以上对Intent的Component属性的介绍中就说明过。这种策略主要在源组件知道目标组件名称的情况下使用。间接Intent策略中没有指定Component属性的Intent,寻找组件需要通过子元素来实现。这就要求Intent中包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定出满足Intent的组件。
64、Android系统提供的Action常量有哪些,如何使用。
Action常量常量值(字符串)动作说明
ACTION_CALL 呼叫指定用户
ACTION_EDIT 对于指定数据进行编辑
ACTION_VIEW 向用户显示指定数据
ACTION_PICK 从列表中选择并返回某项目
ACTION_DIAL 显示打电话面板,可以实现紧急呼叫
ACTION_SEND 向他人发送数据(短信)
ACTION_ANSWER 应答电话
65、如何在程序清单文件AndroidManifest.xml中配置Activity?
对于应用程序中的每一个Activity我们都需要在程序清单文件AndroidManifest.xml中进行配置,这样才能有机会运行。这种配置也是非常简单的,方法就是在程序清文件的元素中添加子元素即可。添加时一般要注明该Activity的以下三个属性:
?(1) name:指明要配置的Activity的实现类
?(2) icon:指明要配置的Activity的图标
?(3) label:指明要配置的Activity的标签
在文件AndroidManifest.xml中我们除了要配置每一个Activity外,还需进行子元素的配置,该元素用于指定Activity可响应的Intent。对于每一个应用程序来说,无论它是由几个Activity组成,但只有一个Activity是它的入口。到底哪一个是入口的Activity,这得由清单文件中的子元素来决定。如果想指定某个Activity为程序入口,这时需在其对应的子元素中必须具备如下属性:
66、介绍与Activity生命周期相关的回调方法的功能及使用方法。
与Activity生命周期相关的回调方法主要有以下七个:
(1) onCreate():当创建一个Activity时,系统会回调onCreate()方法进行初始化设置,如创建视图、绑定数据至列表。
(2) onStart():当一个Activity开始执行时此方法被回调,这时的Activity是可见的,会紧跟在onCreate()方法后面执行。
(3) onResume():当一个Activity真正开始运行或重新恢复时被回调,此时会获得焦点。
当一个Activity运行时,如果用户又激活了另一个Activity,这时第一个Activity将会被暂停。在第一个Activity在没有被杀死的情况下,以后又有了重新运行的机会,那么就会直接调用onResume()方法将其恢复。
(4) onPause():暂停Activity时被回调。
如果在一个Activity运行时,用户又激活了另一个Activity,这时将会调用第一个Activity的onPause()方法将其暂停。在Activity 的状态变换过程中onResume()和onPause()方法经常被调用,因此在使用中应使用简单高效的代码。
(5) onStop():停止Activity时被回调。
如果在一个Activity运行时,用户又激活了另一个Activity,而且第一个Activity很久都没有得到再次运行机会,就会调用onStop()方法将第一个Activity停止。
(6) onReStart():在Activity从停止状态转换到活动状态前,回调该方法。
当一个处于停止状态的Activity又获得了用户输入焦点,就会调用onRestart()方法,重新开始执行这个Activity。
(7) onDestroy():在销毁Activity前,即进入非活动状态前,回调该方法。
67、Activity在其生命周期中会处于哪几种状态?
一个Activity在其生命周期中会在四个重要状态间进行转换。下面分别说明各状态:
(1) 活动状态,处于该状态时,Activity位于前台,用户可见且可获得焦点;
(2) 暂停状态,处于该状态时,该Activity仍可见,但失去焦点,其它Activity位于前台;
(3) 停止状态,处于该状态时,Activity不可见且失去焦点;
(4) 销毁状态,处于该状态时,Activity被系统或进程结束。
68、如何将一个Activity设置成窗口的样式。
android:theme=”@android:style/Theme.Dialog”或
android:theme=”@android:style/Theme.Translucent”就变成半透明的
69、使用资源包括哪几种方法?
(1) 在代码里使用资源类;(2) 在代码里调用资源类并实例化;(3) 从其他资源类里引用。
70、谈谈android中常用的几种布局。
在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
(1)FrameLayout 框架布局,放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素,适合浏览单张图片。
(2)LinearLayout 线性布局,是应用程序中最常用的布局方式,主要提供控件水平或者垂直排列的模型,每个子组件都是以垂直或水平的方式来定位(默认是垂直)。
(3)AbsoluteLayout 绝对定位布局,采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x 和 android:layout_y来确定坐标。
(4)RelativeLayout 相对布局,根据另外一个组件或是顶层父组件来确定下一个组件的位置。和CSS里面的类似。
(5)TableLayout 表格布局,类似Html里的Table.使用TableRow来布局,其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。
71、android中常用的数据存储方式有哪些?
常用的数据存储方式:SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。
72、一个Activity就是一个可视化的界面或者看成是控件的容器。(对)
73、Intent有很长的生命周期,是没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失。(错)
74、当Antivity的启动模式设置为SingleTop表示当该Anctivity的实例在栈顶时只会产生一个实例。(对)
75、onPause()方法在activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是对运行时数据的现场保护。(对)
76、onDestroy是activity被结束掉前最后一个被调用方法,当调用finish方法或者系统为了节省空间将它暂时性的结束掉时候调用。(对)
77、不是所有的Activity都有自己的生命周期。(错)
78、 onPause( ) 是service的生命周期方法(错)
79、如果service已经启动,再次启动该服务时将先后调用onCreate()和onStartCommand()方法。(错)
80、利用HttpURLConnection的.getInputStream()方法得到的是字符流。(错)
81、程序中使用http协议从网上下载文件时,无需设置访问网络的权限。(错)
82、使用startService()方法启动服务后,调用者和服务间没有关联,即使调用者退出了,服务任然进行。(对)
83、当应用程序中某广播在AndroidMainifest进行注册后,即使该应用程序关闭后,也可以接受操作系统发出的广播信息。(对)
84、UIthread 通常就是main thread,Android启动程序时会替它建立一个MessageQueue。(对)
85、广播接收器可以在Activity中单独注册与注销。(对)
86、广播接收器只能在配置文件中注册。(错)
87、对下面代码: notification.vibrate=new long[]{100,200,100,500}, 其中notification是通知管理器对象,表示我们对Notification 设置了震动,并且是100ms延迟后,震动200ms,然后停止100ms,再震动500ms (对)
88、使用Notification时,需要发送广播实现notify。(错)
89、在AndroidManifest.xml中注册广播,需要使用标签。(对)
90、有2种方式注册BroadcastReceiver的方法,一是静态的在AndroidManifest.xml中注册,二是动态的在代码中注册。()(对)
91、如果需要一个通知立即显示,那么在构造Notification对象的时候,需要在构造函数的第三个参数中传递 new Calendar()的值(错)
92、取消注册BroadcastReceiver,调用Context.unregisterReceiver()方法(对)
93、编写用Intent实现的用户登录程序。
要求:在第一个界面上输入用户名和密码,在第二个界面上显示前一界面中输入的用户名和密码。
MainActivity.java:
public class MainActivity extends Activity {
private TextView user, pass;
private EditText username, password;
private Button loca;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loca.setOnClickListener(new MyButtonListener());
}
class MyButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
String tx1 = username.getText().toString();
String tx2 = password.getText().toString();
Intent intent = new Intent();
intent.putExtra("tx1", tx1);
intent.putExtra("tx2", tx2);
intent.setClass(MainActivity.this, OtherActivity.class);
}
}
}
OtherActivity.java:
public class OtherActivity extends Activity {
private TextView te1, te2, te3, te4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String value1 = intent.getStringExtra("tx1");
String value2 = intent.getStringExtra("tx2");
te2.setText(value1);
te4.setText(value2);
}
}
activity_main.xml:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:id="@+id/user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名" />
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
android:id="@+id/pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码" />
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />