如果有错误或者不对的,希望大佬指出
科大讯飞的面试
是如何解决图片带来的OOM?
1.确定图片大小,可以先加载缩略图;
2.压缩图片质量;
3.根据控件实际大小加载对应大小的图片;
4.然后就是缓存,内存缓存,磁盘缓存,Lru缓存。
如何知道一张图片所占的内存?
1.分辨率 * 像素点; (width * height *像素点)
如果多线程中引用单例模式,会引发什么后果?如何解决?
后果(有大佬有好的文章,评论区贴一下):可能会出现多个单例(讲一下单例的3个模式(懒汉,饿汉,内部类)),讲一下3种模式的区别;
解决:加锁,引申到多线程的锁机制。
在子线程中new Handler 会怎么样?
很可能会延伸到Handler的源码,首先在子线程new Handler需要进行 Looper.loop 和Looper.prepare,使Handler进行工作,这个子线程会被handler一直持有,不会结束。大家可以写个例子
new Thread({
Looper.prepare()
new Handler(){
void hanlderMessage(){
}
}
handler.sendMessage()
Looper.loop()
//这句是不会执行的结果就是这样的,大家可以测试一下 需要调用handler.quitSalf()才会执行
Log.i(TAG,"log....")
}).start()
安卓6.0的权限适配,8.0的权限适配?
6.0以后是运行时权限适配,8.0的权限分组
dp和px的关系?
等待有心人贴文章
屏幕分辨率的适配?
等待有心人贴文章
Service有几种启动方式?他们的生命周期又如何?
- start 和binder,2种方式
- start启动的生命周期不依赖某个组件,binder需要的生命周期依赖与一个组件
- 假设在A界面使用binder启动service,此时如果A界面退出,service会销毁
- 同样情况,A界面启动binder方式启动service,在B界面也用binder启动同一个service,这时service的生命周期不会重新执行.B界面销毁,serivce不会被销毁.A界面销毁,service会被销毁
- 可以得出,binder启动的service,是1个servive持有多个组件,等到持有的组件全部被销毁,service就会被销毁