BJC_oppo 面试题

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的区别

对象序列化

静态方法锁与动态方法锁的区别

单例模式与线程安全

静态方法锁与方法锁的区别,俩个对象带锁的方法是否可以同时调用

你可能感兴趣的:(BJC_oppo 面试题)