Android 练习错题集

1. GLSurfaceView提供了下列特性
                1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
                2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
                3> 用户自定义渲染器(render)。
                4> 让渲染器在独立的线程里运作,和UI线程分离。
                5> 支持按需渲染(on-demand)和连续渲染(continuous)。
                6> 一些可选工具,如调试。
2.在同一线程中android.Handler和android.MessaegQueue的数量对应关系是怎样的?
    1(Handler):N(MessageQueue)
3.下面关于Android中定义style和theme的正确描述有:
都可以减少重复属性设置
style可以作用在Activity上
一个TextView的style中定义了textColor属性,TextView本身也设置textColor属性,那么TextView本身定义的优先级较高
4. 进程按重要性分类,第一类进程最重要,通常最后被销毁
1:前台(Foreground)进程,与用户当前正在做的事情密切相关。不同的应用程序组件能够通过不同的方法使它的宿主进程移到前台。当下面任何一个条件满足时,可以考虑将进程移到前台:
(1)进程正在运行一个与用户交互的Activity ,它的onResume()方法被调用
(2)进程有一个Service,该Service对应的Activity正在与用户交互
(3)进程有一个Service被调用startForeground()方法,要求到前台来执行
(4)进程有一个Service,并且在Service的某个回调函数(onCreate()、onStart()、 或onDestroy())内有正在执行的代码。
(5)进程有一正在运行的BroadcastReceiver,它的onReceive()方法正在执行
2:可见(visible)进程,它有一个可以被用户从屏幕上看到的Activity,但不在前台,它的onPause()方法被调用。这样的进程一般不允许被杀死,除非为了保证前台进程的运行不得不这样做。
3:服务(service)进程,有一个已经用startService() 方法启动的Service。虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如后台MP3播放、后台数据上传下载等)。因此,系统将一直运行这些进程除非内存不足以维持所有的前台进程和可见进程。
4:后台(background)进程, 拥有一个当前用户看不到的Activity(它的onStop()方法被调用)。这些进程对用户体验没有直接的影响。如果它们正确执行了Activity生命期,系统可以在任意时刻杀死进程来回收内存,并提供给前面三种类型的进程使用。
5:空(empty)进程,不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度。
5.Intent可传递的数据类型
1. 8种基本数据类型及其数组   
2. String(String实现了    Serializable   )/CharSequence实例类型的数据及其数组   
3. 实现了Parcelable的对象及其数组  (自己来做, 操作较复杂, 但速度快) 
4. 实现了   Serializable   的对象及其数组(系统来做, 操作简单, 但速度慢)  
File在Java里也是类,在Android里也实现了Serializable接口
6.Android中MVC模式
M层:适合做一些业务逻辑处理,比如  数据库  存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。 
V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。 
C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据
7. Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动 
消失。    Toast也可以完全自定义,还可以带图片。
8. Android使用 getWritableDatabase() 和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。(getReadableDatabase()方法中会调用getWritableDatabase()方法)

getReadableDatabase()并不是以只读方式打开数据库,而是先执行getWritableDatabase(),失败的情况下才以只读方式打开数据库.。

但getWritableDatabase()方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,

getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,
倘若使用如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值