一、选择题
1、在 android 中使用 RadioButton 时,要想实现互斥的选择需要用的组件是( )
A、ButtonGroup
B、RadioButtons
C、CheckBox
D、RadioGroup
2、关于 Handler 的说法正确的是( )
A、它实现不同线程间通信的一种机制
B、它避免了新线程操作 UI 组件
C、它采用栈的方式来组织任务的
D、它可以属于一个新的线程
3、下列哪个可做EditText编辑框的提示信息?
A、android:inputType
B、android:text
C、android:digits
D、android:hint
4、退出Activity对一些资源及状态的操作保存,可在生命周期的哪个函数中进行。( )
A、onPause()
B、onCreate()
C、onResume()
D、onStart()
5、Android项目工程下面的assets目录的作用是什么?( )
A、放置应用到的图片资源Res/drawable。
B、主要放置一些文件资源,这些文件会被原封不动打包到apk里面
C、放置字符串,颜色,数组等常量数据 res/values
D、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout
6、Intent的作用是( )
A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据。
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因 为切换页面而消失。
C、实现应用程序间的数据共享。
D、处理一个应用程序整体性的工作。
7、下列哪个是AbsoluteLayout中特有的属性?( )
A、android:layout_height
B、android:layout_x
C、android:layout_above
D、android:layout_toRightOf
8、在手机开发中常用的数据库是( )
A、sqlLite
B、Oracle
C、Sql Server
D、Db23
9、关于BroadcastReceiver的说法不正确的是( )
A、是用来接收广播Intent的。
B、一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收。
C、对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者。
D、接收者声明的优先级别在<intent-filter>的android:priority属性中声明,数值 越大优先级别越高。
10、使用MediaPlayer播放保存在sdcard上的mp3文件时( )
A、需要使用MediaPlayer.create方法创建MediaPlayer。
B、直接newMediaPlayer即可。
C、需要调用setDataSource方法设置文件源。
D、直接调用start方法,无需设置文件源。
11、在多个应用中读取共享存储数据时,需要用到的query方法,是哪个对象的方法?( )
A、ContentResolver
B、ContentProvider
C、Cursor
D、SQLiteHelper
12.内存监测工具DDMS中Log信息分为几个级别?( )
A、3
B、4
C、5
D、6
13.关于自定义Adapter的优化方法,我们通常采用三种方式,则以下不能采用的是( )
A、复用布局视图对象
B、图片异步加载
C、组件重用
D、创建一个内部类
14.能够自动完成输入内容的组件是( )
A、TextView
B、EditText
C、ImageView
D、AutoCompleteTextView
15. 表示下拉列表的组件是( )
A、Gallery
B、Spinner
C、GridView
D、ListView
16. 在Activity中需要找到一个id是bookName的的TextView组件,下面哪种语句写法是 正确的?( )
A、TextView tv = this.findViewById(R.id.bookName);
B、TextView tv = (TextView)this.findViewById(R.id.code);
C、TextView tv = (TextView)this.findViewById(R.id.bookName);
D、TextView tv = (TextView)this.findViewById(R.string.bookName);
17. Android SDK中提供了一个什么处理图片的工具解决不同屏幕分辨率适配的问题。( )
A、Draw7-patch
B、Draw8-patch
C、Draw9-patch
D、Draw10-patch
18. 下列说法错误的是( )
A、Button是普通按钮组件,除此外还有其他的按钮组件。
B、TextView是显示文本的组件,TextView是EditText的父类。
C、EditText是编辑文本的组件,可以使用EditText输入特定的字符。
D、ImageView是显示图片的组件,可以通过设置显示局部图片。
19. Android API将什么以Content Provider的方式提供给开发者,使其可以对通讯录进 行一系列操作?( )
A、文件浏览器
B、数据库文件
C、系统通讯录
D、数据表
20. Android API 提供了一系列的类来实现或操作Content Provider相关功能,以下未涉及到的一类是( )
A、Content Provider
B、Content Resolver
C、ContentValues
D、Content Changer
21.ArrayAdapter通常用什么构造方法进行构建?( )
A.ArrayAdapter<T>(Context context,int textViewResourceId)
B.ArrayAdapter<T>(Context context,T[] objects)
C.ArrayAdapter<T>(Context context,int textViewResourceId,T[] objects)
D.ArrayAdapter<T>(int textViewResourceId,T[] objects)
22.下列说法错误的是( )
A、Button是普通按钮组件,除此外还有其他的按钮组件。
B、TextView是显示文本的组件,TextView是EditText的父类。
C、EditText是编辑文本的组件,可以使用EditText输入特定的字符。
D、ImageView是显示图片的组件,可以通过设置显示局部图片。
23、处理菜单项单击事件的方法不包含( )
A、使用onOptionsItemSelected(MenuItem item)响应。
B、使用onMenuItemSelected(int featureId,MenuItem item)响应。
C、使用onMenuItemClick(MenuItem item)响应。
D、使用onCreateOptionsMenu(Menu menu)响应。
二、简答题
1、列举Android系统中的五个进程优先级,并作出详细介绍。
答:前台进程>可见进程>服务进程>后台进程>空进程。
(1)前台进程,表明用户正在与该进程进行交互操作。
(2)可见进程,指部分程序界面能够被用户看见,却不在前台与用户进行交互,不响应界面事件的进程。
(3)服务进程,指包含已启动服务的进程,特点是没有用户界面,在后台长期运行。
(4)后台进程,指不包含任何已经启动的服务,而且没有用户可见的Activity进程。
(5)空进程,不持有任何活动组件的进程。
2、介绍Android系统有四个重要的组件。
答:Android系统的四种基本组件Activity、Service、Broadcase Receiver和Content Provider。
(1)Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,用于提示用户程序已经正常启动。
(2)Service一般用于没有用户界面,但需要长时间在后台运行的应用。
(3)Broadcase Receiver是用来接受并响应广播消息的组件。
(4)Content Provider是Android系统提供的一种共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。
3、在Android生命周期过程中,Activity一般表现为哪4种状态?
答:(1)活动状态,完全能被用户看到,与用户进行交互的状态。
(2)暂停状态,Activity不处于用户界面的最上层,已经失去了焦点,不能与用户进行交互。
(3)停止状态,Activity在界面上完全不能被用户看到,保存了当前数据和UI状态。
(4)死亡状态,Activity被系统销毁。
4、Android系统中Intent的定义和用途?Intent启动Activity方式有哪两种?
定义:为其他组件提供交互能力,将一个组件的数据和动作传递给另一个组件。
用途:1)启动Activity和Service
2)发布广播消息
启动方式:显式调用,指明调用Activity的Class类;隐式调用,无需指明具体启动哪一个Activity,选择权由Android系统和最终用户类似决定。
5、使用Service的方式有哪两种?描述Service的生命周期。
Context.startService()方式启动
Context.bindService()方式启动
6、SQLite数据库体系结构中最核心的部分是什么?
答:虚拟机/虚拟数据库引擎。完成与数据操作相关的全部操作并且是客户与储存之间信息进行交换的中间单元。
7、ContentProvider是应用程序之间一种什么样的接口机制?通过继承ContentProvider类可以创建一个新的数据提供者,请简述该过程。
答:ContentProvider为不同的软件之间数据共享,提供统一的接口。
1)定义URI,即统一资源标识符,作用是唯一标识 Content Provider 及其中的数据。
2)设置MIME数据类型,作用是指定某个扩展名的文件用某种应用程序来打开。
3)实现初始化、查询、插入、更新、删除、返回这几个方法。
onCreate():初始化 provider query():查询数据
insert():插入数据到 provider update():更新 provider 的数据
delete():删除 provider 中的数据 getType():返回 provider 中的数据的 MIME 类型
8. 系统和用户之间进行信息交换的媒介是什么?实现什么信息的转换?
答:用户界面。实现信息的内部形式与人类可以接受形式之间的转换。
9. Android中使用什么接口定义远程服务的窗口?服务接口文件的扩展名是什么?
答: AIDL .aidl
10.简述Android系统三种菜单的特点及使用方式。
(1)选项菜单:可分为图标菜单和扩展菜单,图标菜单的子项最多是六个,支持显示图标,不支持单选框和复选框;而当子项多于六个时,采用扩展菜单,扩展菜单的子项是垂直排列,支持单选框和复选框,不支持显示图标。第一次启动选项菜单时,只需要调用一次onCreateMenu函数。
(2)子菜单:能够展示更加详细的信息,通过addSubMenu函数增加子菜单,但不支持嵌套。
(3)快捷菜单;点击界面元素超过2秒后,则启动该界面元素的快捷菜单。每次启动时都要调用一次onCreateMenu函数。
三、编程题
1.编写一个Android程序,使用AsyncTask实现获取网页html代码,并且使用TextView 显示。
public class MainActivity extends Activity {
// 定义组件
private EditText edtURL;
private TextView edtHTTP;
private Button btnRequest;
private String strURL;// 用于存储网站地址
private MyTask myTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化组件
edtURL = (EditText) findViewById(R.id.edturl);
edtHTTP = (EditText) findViewById(R.id.edthttp);
btnRequest = (Button) findViewById(R.id.requesthtml);
// 监听获取html代码的按钮
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(strURL = edtURL.getText().toString()).equals("")) {
//实例myTask对象
myTask = new MyTask(edtHTTP);
myTask.execute(strURL);
}
}
});
}
}
public class MyTask extends AsyncTask<String, integer, StringBuffer> {
private TextView edtHTTP;// 用于显示HTML代码
private StringBuffer sbHTML;// 用于储存HTML代码
public MyTask(TextView edtHTTP) {
this.edtHTTP = edtHTTP;
sbHTML = new StringBuffer();
}
/**
* doInBackground方法内部执行后台任务,不可在此方法内修改UI
*/
@Override
protected StringBuffer doInBackground(String... params) {
// 初始化HTTP的客户端
HttpClient hc = new DefaultHttpClient();
// 实例化HttpGet对象
HttpGet hg = new HttpGet(params[0]);
try {
// 让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象
HttpResponse hr = hc.execute(hg);
// 使用缓存的方式读取所返回的数据
BufferedReader br = new BufferedReader(new InputStreamReader(hr
.getEntity().getContent()));
// 读取网页所返回的HTML代码
String line = "";
sbHTML = new StringBuffer();
while ((line = br.readLine()) != null) {
sbHTML.append(line);
}
return sbHTML;
} catch (IOException e) {
edtHTTP.setText("获取网页HTML代码出错!!!");
}
return null;
}
/**
* onPostExecute方法用于在执行完后台任务后更新UI,显示结果
*/
@Override
protected void onPostExecute(StringBuffer result) {
// 判断是否为null,若不为null,则在页面显示HTML代码
if (result != null) {
edtHTTP.setText(result);
}
super.onPostExecute(result);
}
}
2.编写一个程序,输入两个整数值,点击求和按钮后显示两个数的和。
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText one,two;
Button add;
TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = findViewById(R.id.one);
two = findViewById(R.id.two);
add = findViewById(R.id.add);
show = findViewById(R.id.show);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String first = one.getText().toString();
String second = two.getText().toString();
try {
int add = Integer.parseInt(first) + Integer.parseInt(second);
show.setText("两数之和:"+ add);
} catch (Exception e) {
show.setText("请输入数字!");
}
}
});
}
}
<LinearLayout>
<EditText
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="add"
/>
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
3.编程实现具有“登录按钮”的主界面,点击“登录”按钮后打开第二个Activity, 第二个Activity上面显示主界面输入的用户名和密码,并定义返回键将用户名和密码 传递回主页面的Acivity中。
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText name,password;
Button register;
TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.name);
password = findViewById(R.id.password);
register = findViewById(R.id.register);
show = findViewById(R.id.show);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = name.getText().toString() + "\n" + password.getText().toString();
Intent intent = new Intent(MainActivity.this, Second_Activity.class);
intent.putExtra("message", message);
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==1 && resultCode==2) {
String result=data.getStringExtra("data");
show.setText(result);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
Second_Activity.java
public class Second_Activity extends Activity{
Button back;
TextView message;
String send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_view);
back = findViewById(R.id.back);
message = findViewById(R.id.message);
Intent intent = getIntent();
String result = intent.getStringExtra("message");
send = result;
message.setText(result);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent data = new Intent();
data.putExtra("data", send);
setResult(2,data);
finish();
}
});
}
}
<LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:" />
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</LinearLayout>
<Button
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登陆" />
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout >
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back" />
</LinearLayout>