【android高级编程】简答题汇总

资源的使用

可被R文件索引:layout,图片资源,values:string color style dimen
不可被索引:网络,SD卡 ,数据库,assets,文件

  1. assets资源

assets目录中的文件格式hi任意的,不一定是xml
assets目录下的文件不会被R类索引,即不能使用Resources对象获取
assets目录下的资源不会被打包到apk中

文件存储

SQLite

  1. 事务的ACID特性:原子性、一致性、隔离性、持久性

ContentProvider

  1. uri

统一资源标识符:Uniform Resource Identify
组成:content://org.edu.provider/words
“content://” :Android中的固定部分
“org.edu.provider”:ContentProvider中的authority
words:资源部分,根据资源不同而有所不同

Service创建

  1. 两种创建方式:

context.startService(Intent intent)
生命周期:onCreate() 、onstartCommand()、 Service Running、onDestroy()
单例模式 ;依赖于创建服务的应用程序进程;无论启动了多少次Service,只需要调用一次stopService即可停掉service

context.bindService(Intent intent,ServiceConnection conn,int SERVICE_AUTO_CREATE)
生命周期:onCreate()、onBind()、[onRebind()]、Service Running、onDestroy()
系统会在调用bindService后实例化一个Service并绑定,然后调用onCreate()和onBind()方法
当所有的客户端都和Service解绑后,系统会销毁service

  1. IntentService和Service的区别

intentService自动创建独立的线程执行耗时任务
intentService中有一个维护耗时的线程任务的队列Work
intentService中有一个必须要复写的方法:onHandleIntent()

  1. Activity如何通过Binder实现访问Service中的数据(bindService)
  1. Service中的操作
    提供内部类:Binder 内部提供了一些本Service里属性接口方法
    通过生命周期的onBind()方法将Binder类的引用传给访问者(Activity)
  2. Activity中的操作
    定义Binder类(Service中内部类Binder的类型)的对象属性(假设为myBinder)(用于接收Service传来的Binder引用)
    提供内部类:ServiceConnection,需要该类中提供的2个方法
    onServiceConnected(componentname, binder){myBinder = binder}
    onServiceDisconnected()
  1. AIDL实现跨进程访问Service资源
    创建aidl文件 将接口暴露给客户端 客户端访问aidlService

1)在包含AIDL、Service的应用中:
定义Service:包含资源(属性)、内部的Binder类继承自AIDL编译生成后的类中的内部类Stub(其本质继承自Binder,且实现了AIDL中定义的接口)
重写onBind(), 返回其内部类Binder的对象
定义AIDL文件:定义一个接口,接口中提供访问Service资源的接口方法(抽象方法)
2)在需要访问Service资源的应用中
Activity 自定义ServiceConnection类(实现2个方法:
onServiceConnected(组件名称、Binder对象)、onServiceDisconnected())
定义Binder的对象属性(代理的引用=接口类型、其赋值操作在ServiceConnection方法中,赋值为:代理接口.stub.asInterface(binder对象))
绑定Service(bindService())

  1. 客户端访问aidlservice步骤
  1. 将service端的aidl接口文件复制到客户端应用中(把傲寒完整包结构)
  2. 创建serviceConnection对象
  3. 调用service.bindService()方法远程绑定service
  4. 在ServiceConnection对象的onServiceConnection方法中进行service对象返回值的处理

BroadCastReceiver

接收广播

  1. 接收广播
  1. 启动Activity显示相应数据
  2. 使用NotificationManaager通知用户
  3. 广播给其他应用程序
  1. 接收广播步骤
  1. 自定义一个类继承BR,复写onReceiver()
  2. 设置BR能接收的广播类型并注册该BroadCastReceiver(静态/动态)
  3. 添加相应权限
  4. 调用Context的sendBroadcast()或sendOrderBroadcast()启动BroadCastReceiver
  1. 广播接收器接收的顺序

动态注册的广播接收器优先级高于静态注册的广播接收器;优先级相同时,先注册的广播接收器优先级高

  1. 静态注册与动态注册的区别
  1. 静态:即使Activity销毁,仍可以接收到广播
    动态:受Activity生命周期的影响,当Activity销毁时,广播失效
  2. 静态注册:常驻型,即应用程序关闭后,仍会收到广播消息,程序也会被系统调用运行,一旦安装应用就注册,不可注销
    动态注册:不是常驻型,可手工注册,手工注销

发送广播

  1. 普通广播和有序广播的区别
普通广播有序广播
完全异步顺序接收priority属性
无法终止可以终止
无法传递处理结果可以传递处理结果给下一个接收者:setResultExtras() getResultExtras()
sendBroadCast()sendOrderBroadCast()

常见数据格式分析

  1. 三种解析方式对比
  1. DOM:
    原理:先把XML文档都读到内存中,然后用DOM API来访问树形结构并获取数据
    特点:一次全部加载,对于数量较小时,它的效率较好,但对于XML文件较大时,速度较慢
    直接把文档调入内存,较耗内存
  2. SAX
    原理:SAX是基于事件驱动的,基于回调函数;当使用SAX解析xml文档时,当读到文档开始或结束标签时,会回调一个事件,在读到其他节点或内容的时候也会回调特定函数
    特点:SAX基于事件回调机制,不需要加载全部XML文件内容,是以边读边写解析的方法进行xml的解析,较适用于xml相对比较大的场合
  3. PULL
    原理:android的事件机制是基于回调函数的,pull方式也是基于事件驱动,与SAX方式一样。区别是pull返回值是数字
    特点:适用xml文件较大的时候

网络应用

图形图像处理

  1. Matrix对图像的处理
  1. Translate:平移变换
  2. Rotate:旋转
  3. Scale:缩放
  4. Skew:错切

动画

  1. 属性动画与补间动画的区别
  1. 补间动画缺陷:
    a. 作用对象属性只能作用在View上,不能作用于非View对象
    b. 效果单一,只包含移动、缩放、旋转、淡入淡出效果
    c. 没有改变view的属性,只能改变视觉效果
  2. 属性动画特点
    a. 作用对象:任意java对象
    b. 实现的动画效果:可自定义各种动画效果
  1. ObjectAnimator中动画的播放顺序
  1. 只有一个ObjectAnimator对象时,直接 该对象.start()
  2. 多个ObjectAnimator对象时,通过AnimatorSet类,
    a. 顺序播放:animSet.playSequentially(串行顺序)
    b. 同时播放:animSet.playTogether(动画对象们);
    c. 自定义播放顺序:play(animator).with(animObj).before(animObj).after(animObj)

多媒体应用开发

  1. MediaPlayer和SoundPool
MediaPlayerSoundPool
作用播放普通的音频文件播放短促的音效
同一时刻只能播放一个音频文件可以同时播放多个音效
特点占用内存资源大,有时间延迟,性能消耗较大性能较高,效率较快,资源内存占用小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值