面试题总结

一 .据存储:文件、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.

posted @ 2017-10-07 20:50  让学习如呼吸一般自然  阅读(169)  评论(0编辑  收藏  举报