面试题总结
一 .据存储:文件、sp.contentProvider
1.shareepreference 跨进程同步,文件过大存取时间慢
二.内存对象序列化
序列化:将对象的状态信息转换为可以储或传输形式的过程
1.seralizeble:会产生大量临时变量
a2.parcelable:比serializabke好,但是不能存储在磁盘上
三.mvc
m.业务逻辑处理
v.处理数据显示部分
c.Activity处理用户交互问题
优点:使用view的部分显示
特点:耦合性低
可扩展性好
模块职责划分明确
五:冷启动的优化
1.什么是冷启动 启动前系统中没有该应用的任何进程信息
2.冷启动时间计算 从应用创建进程开始计算到完成视图第一次绘制(内容对用户可见)为止
3.冷启动流程 1.zygote进程中创建一个新的进程 2.创建和初始化application类,创建mainActivity类 3.inflate布局,当onCrate /onStart/onResume都走完 4.onCreateView的measure layout draw 显示在界面上
4.冷启动的优化 1.减少oncreate方法工作量(第三方sdk懒加载) 2.不要上application参与业务操作耗时操作 3.不要以静态变量的方式在application保存数据
六:其它优化
1.android不用静态变量保存数据
4.避免使用static变量
七:存储管理
1.内存管理机制概述 (1.分配机制 操作系统会为每个进程分配合适的内存 2.回收机制 系统内存不足的时候会有一个合理的内存回收机制)
2.andrid内存管理机制 (1.分配机制 一开始不会分配太多内存(先分一个小额的量,这个量和物理的rom尺寸有关,不够用的 时候会再分配额外的内存 2.回收机制 倾向于杀死占用更多内存的进程)
3.内存管理机智的特点 1.更少的占用内存 2.合适的时候合理释放内存 3.在系统内存紧张的情况下,能释放掉大部分不重要的资源,来为android系统提供可用的内存 4.能够在合理特殊的生命周期中保存或还原重要数据,以至于系统能正常重新恢复应用
八:内存优化
1.service完成任务,尽量停止它(IntentService)
2.在ui不可见的时候,释放掉一些只有ui使用的资源
3.在系统内存紧张的时候,尽量释放掉一些非重要资源
4.避免滥用Bitmap导致内存浪费
九:Activity生命周期
1.activty的四种状态
running/paused/stopped/killed
2.生命周期
启动 onCreate-----onStart------onResume ,onResume是可以和用户交互的
点击Home键 onPause-----onStop
点击回到原来的Activity onRestart-----onStart---- onResume
退出Activity onPause------onStop-----onDeStoty
3.android进程优先级
前台/可见/服务/后台/空 (不属于前面的任何一种状态,系统可以在任何适合杀死它)
十:android任务栈
任务栈保存每一个activity状态和信息
standard:标准启动模式
singleTop:当天activity的上面如果有其它activity,就会重新创建一个新的actvity,如果没有就会用当前的activity.只有在栈顶的时候才会复用。
singletask:只要当前栈里面有activity,就不回创建新的activity,并且销毁上面的所有activity。
singleInstance:栈中只有一个activity
十一:scheme跳转协议
scheme是一种页面跳转协议
十二:Fragment的详解
1.在大屏上更方便的展示ui,可以分担activity的负担
2.fragment加载方式:静态加载(布局),动态加载
3.fragmentPagerAdapter和fragmentStateAdapter区别,前者适合页面较少的情况,后者适合较多的情况。因为后者每次切换的时候会回收内存,而前者只回收ui
十三:service面试详解
1.service是一个可以常时间在后天运行而没有用户界面的应用组件
2.service和Thread的区别
没有任何关系,service运行在主线程
十四:BroadCast和Receive面试详解
1.广播是一种广泛运行在应用程序之间传输信息机制,android中我们要发送的广播内容是一个Intent,这个Intent可以携带我们要传输的数据
2.使用场景
3.广播的种类 普通广播(NormalBroadCast context.sendBroadcast) 系统广播(system Broadcast context.sendOrderBroadcast)
本地广播(locak BroadCast 只在app内传播)
4.实现广播 receiver: 静态注册:始终能收到广播 动态注册:跟随activity生命周期
5.广播内部实现机制(1.自定义广播接受者BroadcastReceiver,并复写onReceive方法 2.通过Binder机制(activity Mannager service )进行注册 3.广播发送者通过Binder机制向ams发送广播 4.ams查找符合相应条件(IntentFilter/permission等)的 5.消息循环拿到此广播,回调BroadacastReceiver中的onReceive()方法)
十五:webview面试详解
1.Android api 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制webview.addjavescriptInterFace方法,远程攻击者可通过反射api利用该漏洞执行任意java对象的方法
2.webview在布局文件中使用,webview写在其它的容器中时,在ondestory中销毁webview是必须先从容器中remove
十六:本地广播
1.使用它发送的广播只能在app内传播,因此不必担心泄露隐私数据
2.其它的app无法对你的app发送该广播,因此你的app根本不可能接受到非自身应用发送的广播,因此不必担心有安全泄露可以利用
3.比系统的全局广播更高效
4.localBroadcastmannger高效的原因是它内部是通过handler实现的,他的8
3.