文章目录

  • 1.Activity的启动模式
    • 1.什么是Activity启动的标准模式?都会经历那些生命周期的函数?
    • 2.什么是Activity启动的异常模式?都会经历那些生命周期?
    • 3.怎么指定Activity在横竖屏切换的时候不敏感?
    • 4.怎么为Activity指定为横屏或竖屏?
    • 5.Activity启动都有哪些模式?在清单文件里面配置和在代码里面指定到底有何不同?
    • 6.前台任务栈有Activity:AB,后台任务栈有Activity:CD,且CD的启动模式都是singleTask,现在启动Activity D,此时后退任务栈的的顺序是什么?
    • 7.怎么给Activity指定单独的任务栈?怎么查看任务栈的?
    • 8.Activity的启动意图都有哪些?
    • 9.隐式意图需要配置目标组件的InterFilter,这个过滤器都有哪些信息?配置都有哪些规则?
  • 2.跨进程通信
    • 1.在Android开发中怎么使用多进程?
    • 2.同一个应用中开启了多进程会造成哪些问题?
    • 2.怎么通过Serializable来序列化和反序列化一个对象?
    • 3.Parcelable和Serializable他们的作用是什么?有什么区别?
    • 4.什么是Binder?什么是Binder的死亡代理?
    • 5.什么是AIDL?
    • 6.Android中的跨进程通信方式都有哪些?
    • 7.什么Binder连接池?
  • 3.View的事件体系
    • 1.什么是View?什么是ViewGroup?他们关系如何?
    • 2.View都有哪些表示位置的参数?
      • 这些坐标位置都是相对于父容器而言的,是一种相对坐标,是不可变的原始坐标
    • 4.MotionEvent是什么?
    • 5.TouchSlop表示什么?
    • 6.VelocityTracker是什么?
    • 7.GestureDetector是什么?
    • 8.Scroller是什么?它的工作原理?
    • 9.View的scrollTo和scrollBy有何区别?
    • 10.View的mScrollX和mScrollY分别表示什么,正负何如?
    • 11.实现View的移动都有哪些方法?他们的区别是什么?
    • 12.简述View事件分发流程?
    • 13.View的滑动冲突都有哪些场景?怎么解决?
  • 4.View的工作原理
    • ViewRoot的作用是什么?
    • MeasureSpec是什么?
    • 简述View绘制的三大流程?
    • 简述View的draw的过程?
    • 自定义View的分类?
  • 5.Window的工作原理
    • 1.Window和WindowManager的实现类?
    • 2.怎么想屏幕上添加一个Window?
    • 3.Window都有哪些分类?以及他们的层级范围?
    • 4.WindowManager都提供哪些基本的操作?
    • 5.Window的添加、删除、更新过程?Window和View的关系?
    • 6.Activity的Window创建过程?
    • 6.Dialog的Window创建过程?
    • 6.Toast的Window创建过程?
    • 7.除了常见的Activity,Dialog、Toast还有哪些Window?
  • 6.四大组件的工作过程
    • 1.Activity的启动过程?
    • 2.Service的启动过程?
    • 3.Service的绑定过程?
    • 4.BroadCastReceiver的注册过程?
    • 5.广播的发送和接收过程?
    • 6.ContentProvider的注册过程?
    • 7.ContentResolver的调用流程?
  • 7.Android的消息机制
    • 1.Handler是什么?工作流程?
    • 2.ThreadLocal的作用?
    • 3.怎么实现一个异步消息处理线程?
    • 4.主线程中的消息循环是怎么实现的?
  • 8.Android中的线程和线程池
    • 1.HandlerThread的基本使用?
    • 2.IntentService的基本使用?
    • 3.AsyncTask的execute方法和executeOnExecutor方法有何区别?
    • 4.什么是线程池?
    • 5.Java中的线程池?工作原理
    • 5.Java都给我们提供了哪些线程池?
  • 9.Android中的缓存
    • 1.LruCache的基本使用?
    • 2.DiskLruCache的基本用法?

1.Activity的启动模式

1.什么是Activity启动的标准模式?都会经历那些生命周期的函数?

标准模式是指用户和Activity之间正常交互所所经历的生命周期

  • onCreate:第一次被被打开的时候
  • onStart:被看见的时候
  • onRestart:当再次被打开的时候
  • onResume:当获取用户焦点的时候
  • onPause:失去用户焦点的时候
  • onStop:当被完全遮挡的时候
  • onDestroy:当被销毁的时候

2.什么是Activity启动的异常模式?都会经历那些生命周期?

当内存不够用或系统配置发生变化的时候Activity会销毁并重启,系统配置发生变化主要是指手机横竖屏发生变化,软件盘的隐藏等情况

  • 1.onSaveInstanceState
  • 2.onStop
  • 3.onDestroy
  • 4.onCreate
  • 5.onStart
  • 6.onRestoreInstanceState

3.怎么指定Activity在横竖屏切换的时候不敏感?

通过在清单文件里面给Activity设置configChanges属性即可,具体配置如下:android:configChanges=“orientation|keyboardHidden|screenSize”
默认情况下Activity在横竖屏切换时会重启,配置了此属性Activity会横竖屏切换,但是不会重启

4.怎么为Activity指定为横屏或竖屏?

给Activity配置android:screenOrientation="portrait"属性即可

5.Activity启动都有哪些模式?在清单文件里面配置和在代码里面指定到底有何不同?

standard:标准模式
singleTop:栈顶复用模式
singleTask:栈内复用模式
singleInstance:单例模式
其中标准模式和栈顶复用模、单例模式比较好理解,栈内复用模式稍显复杂,在清单文件里面不能配置clearTop属性,在代码里面不能指定singleInstance模式

6.前台任务栈有Activity:AB,后台任务栈有Activity:CD,且CD的启动模式都是singleTask,现在启动Activity D,此时后退任务栈的的顺序是什么?

7.怎么给Activity指定单独的任务栈?怎么查看任务栈的?

在AndroidMinifest.xml通过Activity的taskAffinity属性可以直接指定它所在任务栈,但是该属性必须要和singleTask模式配合使用才能起作用,否则配置无效

  • adb shell dumpsys activity 查看任务栈

8.Activity的启动意图都有哪些?

  • 显示意图:明确指定要启动的组件的类名和包名
  • 隐式意图:没有明确指定要启动组件的类名和包名

9.隐式意图需要配置目标组件的InterFilter,这个过滤器都有哪些信息?配置都有哪些规则?