Android面试

Posted by アライさん on 2019年06月21日

Service生命周期:
call startservice:oncreate->onStartCommond->onDestory (绑定关系,退出就一起退出。多次start之后调用一次oncreate)
call bindService: onCreate->onBind ->onUnbind->onDestory

UncaughtExceptionHandler

MVVM:View,ViewModel(业务逻辑操作),Model(数据层)
LiveData,Data Binding

MVP:Model,Presenter,View

OnMeasure()——>OnLayout()——>OnDraw()
OnMeasure():测量视图大小
OnLayout():确定View位置
OnDraw():绘制视图

ViewGroup包含onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent三个相关事件。
View包含dispatchTouchEvent、onTouchEvent两个相关事件。

帧动画:一帧一帧
补间动画:Alpha、Scale、Translate、Rotate
属性动画:旋转,放大,缩小

ClassLoader

内存泄漏:
Handler 引起的内存泄漏
单例模式引起的内存泄漏
非静态内部类创建静态实例引起的内存泄漏
注册/反注册未成对使用引起的内存泄漏
资源对象没有关闭引起的内存泄漏

页面掉帧卡顿的原因:
(1)过于复杂的布局.
(2)UI线程的复杂运算
(3)频繁的GC

Standard:标准的启动模式
SingeTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的activity实例
SingleTask:如果位于activity栈中,就会复用该activity
singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。

onCreate -> onRestart(不一定) -> onStart -> onResume -> onPause -> onStop -> onDestory

onAttach -> onCreate -> onCreateView -> onActivityCreate ->onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy() -> onDetach

广播
onStart(Intent intent) :会多次触发onStart
onBind(Intent intent) :不会多次触发onStart

Message
MessageQueue
Handler
Looper

创建线程有两种方式:
一、继承 Thread 类,扩展线程。
二、实现 Runnable 接口。