安卓面试题(百度 static,启动模式,内部静态类)(四)

2020-04-02  本文已影响0人  仕明同学

多线程中访问static的方法和不加static的 方法的区别

.synchronized与static synchronized 的区别
synchronized是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。

那么static synchronized恰好就是要控制类的所有实例的并发访问,static synchronized是限制多线程中该类的所有实例同时访问jvm中该类所对应的代码块。

okhttp的原理

OkHttp是一个精巧的网络请求库,有如下特性:

1)支持http2,对一台机器的所有请求共享同一个socket

2)内置连接池,支持连接复用,减少延迟

3)支持透明的gzip压缩响应体

4)通过缓存避免重复的请求

5)请求失败时自动重试主机的其他ip,自动重定向

6)好用的API
网络框架的搭建

image.png

加载一张肯定会导致oom的图片如何处理

hashmap的源码 如何解决hash冲突

LRUCache的底层源码

onnewIntent 的方法执行时机

image.png

launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,

  1. Standard 标准模式
    说明: Android创建Activity时的默认模式,假设没有为Activity设置启动模式的话,默觉得标准模式。每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在。

SingleTop 栈顶复用模式
说明:分两种处理情况:须要创建的Activity已经处于栈顶时,此时会直接复用栈顶的Activity。不会再创建新的Activity;若须要创建的Activity不处于栈顶,此时会又一次创建一个新的Activity入栈,同Standard模式一样。

  1. SingleTask 栈内复用模式
    说明:若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。
  2. SingleInstance 单实例模式
    说明: SingleInstance比較特殊,是全局单例模式,是一种加强的SingleTask模式。它除了具有它所有特性外,还加强了一点:具有此模式的Activity仅仅能单独位于一个任务栈中。

这个经常使用于系统中的应用,比如Launch、锁屏键的应用等等,整个系统中仅仅有一个!所以在我们的应用中一般不会用到。了解就可以。

retrofit的源码

image.png

activity的四中启动的模式 区别

常见的内存泄漏 如何去解决

内部静态类的作用

1.如果内部类不会引用到外部类东西的话,强烈建议使用静态内部类,因为这样更节省资源,减少内部类其中的一个指向外部类的引用。

2.这个静态内部类,不需要在外部引用,只为当前类提供服务。 封装的完整性。

3.还有静态内部类只能访问外部类的静态属性和方法,而且静态内部类还可以有静态数据,静态方法或者又一个静态内部类,这些是非静态内部类所没有的。

binder通信

上一篇 下一篇

猜你喜欢

热点阅读