1、Android基础笔试题

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 对象,一个旧的版本号和一个新的版本号,这样
                你就可以清楚如何把一个数据库从旧的模型转变到新的模型。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值