1、Activity的启动模式。
(1)启动模式主要包括: standard, singleTop, singleTask, singleInstance.
(2)标准模式在每次启动时, 都会创建实例; 三种单例模式, 会根据情况选择创建还是复用实例。在Activity启动中, 创建实例的生命周期: onCreate -> onStart -> onResume;重用实例的生命周期: onNewIntent -> onResume。
(3)在AndroidManifest的Activity中,使用launchMode属性,可以设置启动模式,默认是standard模式;
2、Activity是如何缓存的?
3、Android的Service的生命周期有两种启动方法,有什么区别?
4、怎么保证service不被杀死/进程保活?
(1)Service设置成START_STICKY(onStartCommand方法中),kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样
(2)通过 startForeground将进程设置为前台进程,做前台服务,优先级和前台应用一个级别,除非在系统内存非常缺,否则此进程不会被 kill.具体实现方式为在service中创建一个notification,再调用void android.app.Service.startForeground(int id,Notificationnotification)方法运行在前台即可。
(3)双进程Service:让2个进程互相保护,其中一个Service被清理后,另外没被清理的进程可以立即重启进程。
(4)AlarmManager不断启动service。该方式原理是通过定时警报来不断启动service,这样就算service被杀死,也能再启动。同时也可以监听网络切换、开锁屏等广播来启动service。
5、动画有哪几类,各有什么特点,请简单分析下属性动画的实现原理。
6、请简述Handler/looper机制。
7、请介绍下activty的加载过程。
8、请分析下Android的事件分发机制,请详细说下整个流程。
(11)Activity是事件的起点,事件分被封装成MotionEvent对象发给Activity的dispatchTouchEvent方法。
(2)dispatchTouchEvent内部会把事件传给setContentView指定的布局,即根布局ViewGroup。
(3)根布局的dispatchTouchEvent在接收到事件后调用onInterceptTouchEvent方法。
(4)onInterceptTouchEvent方***判断是否拦截该事件,如果拦截就将事件传给onTouchEvent方法处理。不拦截就直接把事件传给子控件。
(5)onTouchEvent方法负责处理事件,返回值决定是否要消费掉该事件,返回true表示以后由此控件来处理该事件,返回false表示以后也不再接收该事件。
(6)当所有控件的onTouchEvent都返回false时事件由Activity的onTouchEvent来处理。
9、请分析下View的绘制流程。
10、请简述Android IPC机制及Binder原理。
11、请简要阐述下你对ClassLoader的理解/双亲委托机制。
12、请介绍下你知道的插件化框架,原理和框架。
13、请介绍下你知道的热修复框架。
AndFix、Dexposed、微信的Tinker、手机QQ的QFix和RocooFix。
14、如何加快冷启动速度?
15、Android开源框架用过多少?知道他们的具体实现吗?
全部评论
(3) 回帖