1、Activity有哪几种启动方式?分别代表什么意思?
(1)standard 默认模式:每次激活Activity时都会创建Activity实例,并放入回退栈中。
(2)singleTop 如果在回退栈的栈顶正好存在该Activity的实例,就重用该实例,只要不在栈顶,都会创建实例。
(3)singleTask 如果在栈中已经有该Activity 的实例,就重用该实例。重用时,会让该实例回到栈顶,因此在
它上面的实例将会被移除栈。
(4)singleInstance 在一个新栈中创建该Activity 实例,并让多个应用共享该Activity 实例。
2、Android中常用的布局有哪些?
(1)LinearLayout 线性布局
(2)RelativeLayout 相对布局
(3)FrameLayout 帧布局(框架布局)
(4)GridLayout 网格布局
(5)TableLayout 表格布局
(6)AbsoluteLayout 绝对布局
3、ListView优化方案有哪些?数据集合更新后如何更新ListView显示?
(1)重写getView方法,对view对象的复用做的优化。
(2)viewHolder类,调用setTag和getTag方法,将view与holder对象进行绑定。
(3)分页加载
4、Intent都可以传递哪些数据类型?
(1)第一类:简单或基本数据类型 如:putExtra(String name, int[] value)
(2)第二类:传递一个Bundle
(3)第三类:传递Serializable对象
(4)第四类:Parcelable对象
(5)第五类:Intent
5、Fragment和Activity之间是如何传值的?
(1)方式一:拿到对方的对象。如Activity拿到Fragment的对象
(2)方式二:Actviity传递给Fragment,可以通过fragment的setArguments(bundle);getArguments()
(3)方式三:Fragment传递给Activity。可以在Fragment中定义一个内部接口回调,让Activity去实现。
6、介绍下Android都有哪些数据存储方式?
(1) 通过SharedPreferences方式存储,这类存储主要适用于存储信息量小的操作。具有操作和存储简便,
代码简单的特点
(2) 通过SD卡等磁盘介质存储,这类一般都是存成文件的形式。适用于存储信息量大,操作相对复杂些。
(3) 通过数据库,一般都是sqlite的方式进行存储,适用于存储信息量适中,这类存储在查询的时候比较
方便。而且能很好的支持SQL语句。
(4) 通过网络方式存储到其他服务器,这类一般适用于CS方式,且存储数据需要集中存储,具有联网的性
质。比如网游或者复杂应用。
7、解释Message、Handler、MessageQueue、Looper之间的关系,以及如何工作的?
Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,
再有Handler进行Message的分发和处理.
(1)Message Queue(消息队列):用来存放通过Handler发布的消息,通常附属于某一个创建它的线程,
可以通过Looper.myQueue()得到当前线程的消息队列
(2)Handler:可以发布或者处理一个消息或者操作一个Runnable,通过Handler发布消息,消息将只
会发送到与它关联的消息队列,然也只能处理该消息队列中的消息
(3)Looper:是Handler和消息队列之间通讯桥梁,程序组件首先通过Handler把消息传递给Looper,
Looper把消息放入队列。Looper也把消息队列里的消息广播给所有的
(4)Handler:Handler接受到消息后调用handleMessage进行处理
(5)Message:消息的类型,在Handler类中的handleMessage方法中得到单个的消息进行处理
8、页面上有ProgressBar控件,请写一个线程用十秒的时间来完成其从0-100的显示。
private static final int MAX = 100;
private void startLoad() {
new Thread() {
public void run() {
final int[] ints = new int[1];
for (ints[0] = 0; ints[0] <= MAX; ints[0] += 1) {
//在主线程执行代码
runOnUiThread(new Runnable() {
public void run() {
progressBar3.setProgress(ints[0]);
tv_show.setText(ints[0] + "%");
}
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_LONG).show();
}
});
};
}.start();
}
9、Activity启动和销毁时分别会调用哪些生命周期方法?请按照顺序书写。
Activity启动:
(1)onCreate()
(2)onStart()
(3)onResume()
Activity销毁:
(1)onPause()
(2)onStop()
(3)onDestroy()
10、简述在Activity中通常如何使用SQlite数据库?
(1)自定义DBHelper类,
(2)数据库的实例化在此类中以单例模式实现,然后在DBHelper中实现数据库的增删改查方法
(3)然后app内Activity需要使用数据库是通过这个类来操作就行了!
(4)SQLiteOpenHelper 的子类,至少需要实现三个方法:
(a)构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),
数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
(b) onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
(c) onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样
你就可以清楚如何把一个数据库从旧的模型转变到新的模型。
1、Android基础笔试题
最新推荐文章于 2021-06-02 17:29:23 发布