一、判断题(每小题2分,共10分)1、( 错 ) 2、( 错 ) 3、( 对 ) 4、( 错 ) 5、( 对 )
二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分)
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 答案 | D | C | B | A | D | D | D | C | B | B |
三、填空题(每空2分,共10分)1、 TableLayout 、 RelativeLayout
2、 START_ STICKY 、 START_REDELIVER_INTENT
3、 ContentResolver
四、名词解释(每小题5分,共15分)
1、答:Intent Filter其实是一个Intent属性条件的集合,包含Intent对象的action、data、category等属性。每个Intent Filter描述组件的一种能力,即能够接收的一组Intent。
2、答:Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功能。
3、答:如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息并作相应的处理。所以BroadcastReceiver可以看成是全局的,用于监听系统广播消息或自定义广播消息。
五、简答题(每小题5分,共20分)
1、答:获取子Activity的返回值,一般可以分为以下三个步骤:
(1)使用startActivityForResult()去启动子Activity。
(2)设置子Activity的返回值。在子Activity调用finish()函数关闭前,调用setResult()方法将所需的数据返回给父Activity。
(3)在父Activity中获取返回值。当子Activity关闭时,启动它的父Activity的onActivityResult()方法将被调用;如果需要在父Activity中处理子Activity的返回值,则重载此方法即可。
2、答:Android系统中运行Service有如下两种方式:
(1)启动方式
通过Context的startService()方法启动Service,访问者与Service之间没有关联,即使访问者退出了,Service仍然运行。访问调用stopService()停用Service。
(2)绑定方式
通过Context的bindService()方法绑定Service,访问者与Service绑定在了一起,访问者一旦退出,Service也就终止。访问者调用unbindService()来解绑定Service。
3、答:要实现自己的BroadcastReceiver,就需要继承android.content.BroadcastReceiver类并重写onReceive()方法。
BroadcastReceiver作为应用级组件,必须注册才能处理广播消息。注册有两种方式:
(1)静态地在AndroidManifest.xml中用标签声明,并在标签内用标签设置过滤器。
(2)动态的在代码中先定义并设置好一个 Intent Filter 对象,然后在需要注册的地方调Context. registerReceiver (BroadcastReceiver,IntentFilter)方法。
4、开放性问题,没有标准答案。
六、编程题(第1小题10分,第2小题15分,共25分)
1、解://ChangeTextColorActivity.java
package xiong.changetextcolor;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ChangeTextColorActivity extends Activity {
private TextView mText;
private Button mButton;
private int[] mColors;
private int colornum;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mText = (TextView) findViewById(R.id.tv);
mButton = (Button) findViewById(R.id.change);
/* 声明并建构一整数array来储存欲使用的文字颜色 */
mColors = new int[] { Color.RED, Color.BLUE, Color.GREEN,
Color.MAGENTA, Color.YELLOW };
colornum = 0;
mText.setTextColor(mColors[colornum]);
/* 使用onClick让用户点下按钮来驱动变动文字颜色 */
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (colornum < mColors.length-1)
colornum++;
else
colornum = 0;
mText.setTextColor(mColors[colornum]);
}
});
}
}
2、解://TimeService.java
package xiong.startservice;
import java.util.Date;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class TimeService extends Service {
private boolean threadDisable;
public IBinder onBind(Intent intent) {
Log.v("TimeService", "Service onBind");
return null;
}
public void onCreate() {
super.onCreate();
Log.v("TimeService", "Service onCreate");
}
public int onStartCommand(Intent intent, int flag, int startid) {
Log.v("TimeService", "Service onStartCommand");
// 让主要任务在一个新的线程中执行,以避免程序停止响应
new Thread(new Runnable() {
public void run() {
while (!threadDisable) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
Log.i("TimeService", new Date().toString());
}
}
}).start();
return START_STICKY;
}
public void onDestroy() {
super.onDestroy();
this.threadDisable = true;
Log.v("TimeService", "Service onDestroy");
}
}