Android 笔试题
(一)多选题(每题5分,可能包含多个选项)
1. 下列哪种类型的对象不能直接通过Intent传递?
A. String B. Parcelable C. Serializable D. View
2. Activity在不可见时随时会被系统终止。在终止前要保存Activity状态,需要实现哪些方法?
A. onPause() B. onStop() C. onFinish() D. onSaveInstanceState() E. onSaveActivityState()
3. 下列方法中,执行耗时操作而不会产生ANR的有:
A. AsyncTask.doInBackground() B. Pause()
C. Receive() D. StartCommand()
4. 下列做法中,存在内存泄露的隐患有:
A. 在Activity中使用静态变量 B. 成员变量中使用软引用
C. Activity结束时没有将成员变量置为null D. 查数据库忘记关闭Cursor
5. 下列布局中,需要使用Adapter的有:
A. TabHost B. TableLayout C. ListView D. Gallery
6. 下面哪一个方法是View的强制刷新方法?
A. invalidate() B. paint() C. redraw() D. refresh()
7. 如果发现UI布局在手机上出现问题,可以用sdk中哪个工具查看?
A. DDMS B. HierarchyViewer C.TraceView D. hprof-conv
8. 想把手机上的文件拷贝到电脑上,应当使用哪个命令?
A. adb push B. adb install C. adb copy D. adb pull
9. 下面描述正确的是?
A. AIDL是线程间通信解决方案
B. 不同的Android应用之间可以通过SharedPreference交换数据
C. Android的dvm是Linux中的一个进程
D. 一个Android应用可以运行在多个dvm上
(二)填空题(每空5分)
这是一个从 Web 页面读取文本内容并显示的程序,请完成空白的部分。
1. 布局文件 res/l
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:layout_height="wrap_content" android:id="@+id/address"
android:layout_width="fill_parent" android:text="google" >
</EditText>
<Button android:id="@+id/ButtonGo" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="go!">
</Button>
<TextView android:layout_width="fill_parent" android:layout_height="fill_parent"
android:background="#ffffff" android:textColor="#000000" android:id="@+id/pagetext"/>
</LinearLayout>
2. 源文件
public class GetWebPage extends Activity {
Handler h;
public void onCreate(Bundle savedInstanceState) {
Create(savedInstanceState);
;
final EditText eText = (EditText) findViewById(R.id.address);
final TextView tView = ;
this.h = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
tView.append((String) msg.obj);
break;
}
super.handleMessage(msg);
}
};
final Button button = (Button) findViewById(R.id.ButtonGo);
button.setOnClickListener( {
public void onClick(View v) {
android layout布局 try {
tView.setText("");
URL url = new Text().toString());
URLConnection conn = url.openConnection();
// Get the response
BufferedReader rd = new BufferedReader(new InputStream()));
String line = "";
while ((line = rd.readLine()) != null) {
Message lmsg;
lmsg = new Message();
lmsg.obj = line;
lmsg.what = 0;
;
}
}
catch (Exception e) {
}
}
});
}
}
(三)简答题(30分 前四题每题5分 最后一题10分)
1. 上题中源代码实现了怎样的功能?存在什么问 题?请简要描述。
2. 列举启动Service的几种方法,并简述有什么区别。
3. 如果一个应用的包名为”app”,那么它的Sqlite数据库文件在哪个目录下?
4. Android中XML布局文件@+id/和@id/的区别。
5. Message、Handler、Messenger、MessageQueue、Looper之间的关系是什么?
答案:
一、1.D 2.AD 3.A 4.AD 5.CD 6.A 7.C 8.D 9.CD
二、
1. setContentView(R.layout.main)
2. (TextView) findViewById(R.id.pagetext
3. new OnClickListener()
4. GetWebPage.this.h.sendMessage(lmsg)
三、
1.
实现了一个简单的“浏览器”:用一个EditText作为地址栏,一个TextView显示网页内容。点击ButtonGo后通过URLConnection加载url内容,通过Handler实现异步更新TextView内容。
存在的问题是:OnClickListener在主线程运行,没有真正实现异步加载,很容易引起ANR,应当使用AsyncTask或其他异步技术来避免此问题。
2.
1)通过startService
Service会经历 onCreate -> onStart
stopService的时候直接onDestroy
如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的
话,Service会一直在后台运行。
下次TestServiceHolder再起来可以stopService。
2)通过bindService
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论