Android面试题1.0

Android架构
应用程序层-框架层-核心类库层-linux内核层

activity生命周期:
activity从创建到销毁的全过程
oncreat        创建
onstart        oncreat之后或停止状态恢复时调用
onresume        onstart之后调用(获得焦点)
onpause        暂停,停止,销毁时调用
onstop        停止,销毁时调用
ondestory     销毁时调用
onrestart        从停止恢复时调用

activity启动方式
显示启动:
快,Intent指定包名类名启动
隐式启动:
通过动作,类型,数据匹配对应组件

activity四种启动模式:
standard:每启动一个新activity,栈顶创建一个新实例
singletop:判断是否位于栈顶,是则直接调用,否则创建新实例
SingleTask:检查栈中是否存在,存在则直接调用,并出栈所有次实例之上的实例,不存在就新建
SingleInstance:启动新任务栈管理,不存在就创建,存在就转移

Activity传递数据
Intent的putExtra方法传递
基本数据类型,序列化对象
startActivityForResult数据回调

安全退出Activity
1.抛异常强制退出
2.逐个关闭
3.父类注册广播接受者,发送广播退出
4.递归退出

后台Activity被回收解决方案
重写onSavedInstanceState,数据保存到bundle中,再次调用oncreat时,通过bundle保存的数据恢复

服务启动方式:
startService:长期在后台运行,即使开启它的组件销毁,服务也不会停止
bindServicce:绑定组件的启动,关联组件的生命周期

服务生命周期
startservice: oncreat-onstartCommand-ondestory
bindservice:oncreat-onbind-onUnbind-ondestory

广播类型:
有序广播:清单文件中设置广播接受者的优先级,接受者可互相传递数据
无序广播:没有优先级,接受者不能互传数据

广播注册方式:
静态注册:清单文件中注册
动态注册:代码中通过context的registerReceiver注册

contentProvider
应用程序之前的数据共享,安全性,通过 表格 操作数据
外部通过ContentResolver操作

fragment:
android3.0出现的 碎片.Activity的一个模块化区域,可以在acitivty运行期间被操作,需要嵌入在一个activity中,生命周期受Activity影响
静态加载:当做普通UI放入界面中    动态加载:开启事务,通过事务添加fragment,再提交事务

Fragment和Activity交互
A调F:getFragmentManager.findFragmentByTag
F调A:getActivity得到绑定activity的实例

切换fragemtn
FragmentTransaction的replace和commit

recyclerView
高度解耦且灵活,给每个item创建视图

WebView
显示网页内容,LoadUrl(文件路径或网址)

Webview和Javascript交互
Android调javascript代码:初始化webview,开启javascript支持,loadUrl方法加载HTML文件,再调loadUrl调javascript代码
javascript调android:webview绑定javascriptInterface类

android数据加密
base64:数据转换为二进制
对称加密,非对称加密,MD5算法

 

线程池:
作用:提高创建爱你销毁对象的效率,减少cpu消耗,控制活动线程数量
概念:初始化一个多线程应用过程中创建一个线程集合
原理:创建一些空闲线程,有请求就分配一个空闲线程处理

动画:
补间动画:通过平移 缩放 旋转 透明度等完成动画效果
帧动画:加载一系列图片
属性动画:可以改变控件属性的补间动画

视频播放:
videoview
mediaplayer
sufaceview
ijkplayer

绘制view:
onMeasure:尺寸
onLayout:位置
onDrabable:绘制

android:
强引用:普遍使用,宁可oom也不回收
软引用:内存敏感的告诉缓存使用,内存不足时被回收
弱引用:只要发现就被回收
虚引用:跟踪对象被GC的活动

大图片的处理方案:
1.内存中压缩,软引用调用 2.动态回收  BitmapFactory比例缩放图片

okhttp
构建者模式 request  分发Dispatcher
request httpengine 缓存 有就拿 没有就把request发送到连接池 连接池通过connection发送请求 选择路由和平台 到service获取date并返回response

屏幕适配:
不同手机不同套图
自定义像素适配:以美工设计尺为原始尺寸,根据不同设备的密度计算宽高
百分比适配
修改density:dp=density * px


 

你可能感兴趣的:(面试问题系列,面试)