《Android程序设计》期末试题A(答案)
- 格式:doc
- 大小:68.00 KB
- 文档页数:4
一、 判断题(每小题2分,共10分) 1、( 对 ) 2、( 对 ) 3、( 错 ) 4、( 错 ) 5、( 错 ) 二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分) 题号 1 2 3 4 5 6 7 8 9 10 答案 D C C A D D C B B B
三、填空题(每空2分,共10分) 1、 BroadcastReceiver 、 ContentProvider 2、 onCreate 、 onResume 3、 getSystemService
四、名词解释(每小题5分,共15分) 1、答:Activity是一个独立的,可以与用户交互的Android应用组件,在表现形式上它代表一个单独的屏幕。从功能上来说,它作为应用程序的界面框架,负责动态加载各种用户界面视图,实现底层的消息传递等。 2、答:在Android中,Intent是一类特殊的组件,它负责对应用中一次操作的动作以及动作相关数据进行描述,包含了动作的产生组件、接收组件和传递的数据信息。Android则根据此描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 3、答:ContentProvider是不同应用程序之间进行数据交换的标准API。ContentProvider以某种Uri的形式对外提供数据,允许其它应用访问和修改数据;其它应用使用ContentResolver根据Uri去访问操作指定数据。
五、简答题(每小题5分,共20分) 1、答:Android平台的体系架构可以分为以下几层: (1)Linux Kernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。 (2) Libraries和Android Runtime:Libraries:即C/C++函数库部分,大多数都是开放源代码的函数库,例如WebKit,该函数库负责Android网页浏览 器的运行,例如标准的C函数库Libc、OpenSSL、SQLite等,当然也包括支持游戏开发2D SGL和3D OpenGL | ES,在多媒体方面有MediaFramework框架来支持各种影音和图形文件的播放与显示,例如MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等众多的多媒体文件格式。Android的Runtime负责解释和执行生成的Dalvik格式的字节码。 (3)Application Framework:(应用软件架构),Java应用程序开发人员主要是使用该层封装好的API进行快速开发。 (4)Applications:该层是Java的应用程序层,Android内置的Google Maps、E-mail、即时通信工具、浏览器、MP3播放器等处于该层,Java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。 上面四个层次中,下层给上层服务,上层支持下层支持,调用下层的服务,这种严格的分层机制,为Android系统带来很大的灵活性,稳定性和可扩展性。也利于不同层的开发人员专心于该层次的开发任务。 2、答:一个Intent组件包含以下属性。 (1)component:指定Intent的的目标组件 (2)action:要执行的动作 (3)category:动作的所属类别,被执行动作的附加信息。 (4)data:执行动作要操作的数据 (5)type:显式指定Intent的数据类型 (6)extras:包含的所有附加信息的集合 3、广播消息在本质上就是一个Intent对象。要发送一个广播消息,首先把要发送的信息和相关的属性信息(如Action、Category等)封装进一个Intent对象。 调用Context的下列方法之一发送广播消息。 sendBroadcast():发送普通广播 sendOrderedBroadcast() :发送有序广播 sendStickyBroadcast() :发送持续广播 4、开放性问题,没有标准答案。
六、编程题(第1小题10分,第2小题15分,共25分) 1、解://CalculateSumActivity.java package xiong.calculatesum; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;
public class CalculateSumActivity extends Activity { private EditText num1Text = null; private EditText num2Text = null; private Button addBtn = null; private TextView resultView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); num1Text = (EditText)findViewById(R.id.num1); num2Text = (EditText)findViewById(R.id.num2); addBtn = (Button)findViewById(R.id.addBtn); resultView = (TextView)findViewById(R.id.result); addBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { double num1 = Double.parseDouble(num1Text.getText().toString()); double num2 = Double.parseDouble(num2Text.getText().toString()); double sum = num1 + num2; resultView.setText(num1 + " + " + num2 + " = " + sum); } }); } }
2、解://CallPhoneActivity.java package xiong.callphone; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText;
public class CallPhoneActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText phoneNumText = (EditText) findViewById(R.id.phoneNum); Button callBtn = (Button) findViewById(R.id.callBtn); callBtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { String phoneNum = phoneNumText.getText().toString(); if(isValid(phoneNum)){ Uri phoneUri = Uri.parse("tel:" + phoneNum); Intent intent = new Intent(Intent.ACTION_CALL,phoneUri); startActivity(intent); } else{ System.out.println("请输入正确的电话号码!"); } } private boolean isValid(String phoneNum){ Pattern p = Pattern.compile("^\\d+$"); Matcher m = p.matcher(phoneNum); boolean b = m.matches(); return b; } }); } }