Fragment activity交互
1、EventBus、
2、接口回调
3、Bundle和setArguments(bundle)
AMS
1、统一调度所有应用程序的Activity的生命周期启动或杀死应用程序的进程
2、启动并调度Service的生命周期
3、注册BroadcastReceiver,并接收和分发Broadcast
4、启动并发布ContentProvider
5、调度task
6、处理应用程序的Crash
7、查询系统当前运行状态
Activity启动流程
activity 生命周期与启动模式
onCreate (onRestart ) onstart onResume onPause onStop onDestory
standard : 标准模式,系统默认的模式,每次创建Activity都会重现创建一个新的实例,不管这个实例是否已经存在,.
singleTop : 栈顶复用模式:这种模式下,如果当前Activity已经位于任务栈的顶部,则不会重新创建实例,只会回调其newIntent方法,也不会重走生命周期,如果不在栈顶,则创建实例.
singleTask : 栈内服用模式:这种模式下,如果栈内存在Activity的实例,则将其上面的所有Activity出栈,直到那个Activity处于栈顶为止,只会回调其newIntent方法,如果不存在,则创建实例.
singleInstance : 单实例模式.相当于加强版的singleTask模式,除了具有singleTask的特性之外,还加了一点,就是使用此模式的Activity只能单独的处于一个任务栈中
Service与Activity通讯方式
1、回调接口
2、BroadCast广播
Service启动方式和区别
1.startService onCreate()--->onStartCommand()(onStart()方法已过时) ---> onDestory()
2.bindService onCreate() --->onBind()--->onunbind()--->onDestory() bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。绑定者可以调用服务里面的方法
静态与动态广播的区别,静态广播如何启动
1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\
2.动态注册广播不是 常驻型广播 ,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
静态注册是常驻型 ,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
3.在同一个优先级下,谁先启动的快,谁将先接收到广播.
---------------------
本地广播的实现原理
1. 发送的广播只会在自己App内传播,不会泄露给其他App,确保隐私数据不会泄露
2. 其他App也无法向你的App发送该广播,不用担心其他App会来搞破坏比系统全局广播更加高效
contentProvider的使用,数据库的使用升级
窗口泄露
view正在显示 去finish() Window Leaked
解决方法: 关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。
内存泄漏
Static Activities、Static Views、Inner Classes、Anonymous Classes 匿名类、Handler、Threads
性能优化
内存使用、空间占用
anr oom
自定义控件
自定义控件的回调顺序,view事件分发
surfaceView的onDraw方法会不会执行
Handler,post send Message的区别
多线程,线程状态
Handler相关,多线程
主线程与子线程Handler的区别
线程同步问题
Handler机制
多线程,消息机制
进程间通信
binder机制
Java虚拟机与Android虚拟机的区别,dex与class的区别
对象序列化
静态方法锁与动态方法锁的区别
单例模式与线程安全
静态方法锁与方法锁的区别,俩个对象带锁的方法是否可以同时调用