Android方面
1.本地广播和全局广播有什么差别?
因为广播数据在本应用范围内传播,不用担心隐私数据泄露的问题。
不用担心别的应用伪造广播,造成安全隐患。相比在系统内发送全局广播,他更高效。
2.intentService作用是什么?AIDL解决了什么问题?
生成一个默认的且与主线程互相独立的工作者线程来执行所有传送至onStratCommand()方法的Intent。
生成一个工作队列来传送Intent对象给你的onHandleIntent()方法,同一时刻只传送一个Intent对象,这样一来,你就不必担心多线程的问题。在所有的请求(Intent)都被执行完以后会自动停止服务,所以,你不需要自己去调用stopSelf()方法来停止。
该服务提供了一个onBind()方法的默认实现,它返回null
提供一个onStratCommand()方法的默认实现,它将Intent先传送至工作队列,然后从工作队列中每次取出一个传送至onHandleIntent()方法,在该方法中对Intent相应的处理
AIDL是一种IDL语言,用于生成可以在Android设备上两个进程之间进行进程通信(IPC)的代码。如果在一个进程中(如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。
AIDL IPC机制是面向接口的,想COM或者Corba一样,但是更轻量级。它是使用代理类在客户端和实现端传递数据。
3.LaunchMode应用场景
- standard:创建一个新的Activity
- singleTop:栈顶不是该类型的Activity,创建一个新的Activity。否则,onNewIntent。
- singleTask:回退栈中没有该类新的Activity,创建Activity。否则,onNewIntent+ClearTop
注意:
- 设置了”singleTask“启动模式的Activity,他在启动的时候,会先在系统中查找属性affinity等于它的属性值taskAffinity的Task存在;如果存在这样的Task,它就会在这个Task中启动,否则就会在新的任务栈中启动。因此,如果如果我们想要设置了”singleTask“启动模式额Activity在新的任务中启动,就要为他设置一个独立的taskAffinity属性。
- 如果设置了”singleTask“启动模式的Activity不是在新的任务中启动时,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,就会把位于这个Activity实力上面的Activity全部结束掉,即最终这个Activity实例会位于任务的Stack顶端中。
- 在一个任务栈中只有一个”singleTask“启动模式的Activity存在。他的上面可以有其他的Activity。这点与singleInstance是有区别的。
singleInstance,回退栈中,只有这一个Activity,没有其他Activity。
singleTop适合接受通知启动的内容显示页面。例如某新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦的。
singleTask适合作为程序入口点。例如浏览器的主界面,不管从多少个应用启动浏览器,只会启动主页面一次,其余情况都会走inNewIntent,并且会清空主页面上面的其他页面。
singleInstance:闹铃的响铃界面。你以前设置了一个闹铃:上午6:00。在上午5:58分,你启动了闹铃设置界面,并且按下Home键回到桌面;在上午5:59,你在聊微信;在6:00,闹铃响了,并且弹出一个对话框形式的Activity(名为AlarmAlertActivity)提示你到6:00了(这个Activity就是以SIngleInstance加载模式打开的),你按返回键,回到的是微信的聊天界面,这是因为AlarmAlertActivity所在的Task的栈只有他一个元素,因此退出后这个Task的栈空了。如果是以SingleTask打开AlarmAlertActivity,那么当闹铃响了的时候,按返回键应该进入闹铃设置界面。
4.Touch时间传递流程
5.View绘制流程
6.Handler,Thread和HandlerThread的差别
7.线程同步
8.什么情况导致内存泄漏
9.ANR定位和修正
10.什么情况导致OOM
11.Service和Activity之间通信的几种方式
12.如何保证Service在后台不被Kill
13.Android为每个应用程序分配的内存大小是多少
14.优化自定义View
15.volley
16.Glide源码解析
17.Android设计模式
18.Android属性动画特性
19.Activity WIndow View 三者的差别?fragment的特点?
20.LinearLayout和RelativeLayout性能对比
21.invalidate和postInvalidate的区别即使用
22.View刷新机制
腾讯面试精选
- 2000万个整数,找出第50大的数字
- 从网络加载一个10M的图片,说下注意事项
- 自定义View注意事项
- 项目中常用的设计模式
- JVM的理解
阿里面试精选
- 进程间通信方式
- 什么是协程
- 内存泄漏是怎么回事
- 程序计数器引到了逻辑地址(虚地址)和物理地址及其映射关系
- 数组和链表的区别
- 二叉树的深度优先遍历和广度优先遍历的具体实现
- 堆的结构
- bitmap对象的理解
- 什么是深拷贝和浅拷贝
- 对象锁和类锁是否会互相影响
- looper架构
- 自定义控件原理
- ActivityThread,Ams,Wms的工作原理
- Java中final,finally,finalize的区别
- 一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法
- 两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
- volatile的意义
- 烧一根不均匀的绳,从头到尾总共需要1小时。现在有若干条材质相同的绳,问如何用烧绳的方法来计时一个小时十五分钟呢?