知识点总结

1.Activity A -> Activity B

A:onCreate() onStart() onResume()

A:onPause()

B:onCreate() onStart() onResume()

A:onStop()

返回后:

B:onPause()

A:onRestart() onStart() onResume()

B:onStop() onDestroy()

2.String相关总结

1,Stringbuilder()>Stringbuffer()>String

2,线程不安全 线程安全 

3.单例饱汉式(懒汉式)和饿汉式

饱汉式:

public class Singleton{

    private volatile static Singleton instance = null;

    private Single(){}

    public static Singleton getInstance (){

        if(instance == null) {

           synchronized(Singleton.class){

                if(instance == null) {

                    instance = new Singleton();

}

}

}

return instance;

}

}

饿汉式:

public class Singleton{

private final static Singleton instance = new Singleton();

private Singleton(){}

public static Singleton getInstance(){

    return instance;

}

}

4.需要搞清楚的3个问题

view的绘制流程

https://www.jianshu.com/p/705a6cb6bfee

每一个Activity包含一个PhoneWindow,DecorView是PhoneWindow类的内部类,是所有View的根View

measure() MeasureSpec 

EXACTLY 精准模式,match_parent或固定值

AT_MOST  最大模式,wrap_content

UNSPECIFIED 无限制模式,系统内部使用

layout() setFrame() 上下左右4个位置的相对位置

draw() 视图的绘制工作 绘制背景、自身view以及子view


touch事件分发

5.handler事件分发过程

handler message looper messageQueue

nativePollOnce()阻塞looper,但不会占用cpu

每个线程只能有一个Looper对象,多个线程可以公用looper

所谓主线程,只不过比子线程中多了一个looper,我们的UI线程在只能在主线中刷新,就是应为线程的loop方法不断轮询绘制的原因,子线程之所有不能刷新UI,是因为子线程没有loop方法,如果我们把子线程中设置一个looper,那么子线程也是可以刷新绘制UI的

6.设计模式总结

https://www.runoob.com/design-pattern/proxy-pattern.html

1.适配器模式:接口转换,解决接口兼容问题

例如:FileInputStream ->InputStreamReader ,字节流转换成Reader子类,从而有了读取的能力

2.装饰者模式:动态的给对象增加新的功能

InputStreamReader -> BufferedReader,从读取一个字符增加了读取一行字符的能力

3.代理模式:增加中间层,方便分配和控制

JDK 自带的动态代理:一定要实现接口,通过InvocationHandler 处理器接口,通过invoke对应方法实现代理访问

Cglib动态代理:不要求类实现接口

7.okhttp

描述:轻量级处理网络请求的开源框架,自动处理Gzip压缩,减少数据流量的消耗,连接池,共享Socket,还能自定义拦截器

自定义拦截器分为两种:

1)ApplicationInterceptor(应用拦截器)

2)NetworkInterceptor(网络拦截器)

1.都能对Response进行拦截,但是执行顺序不同,前者最先执行,多个拦截器会按照list中的顺序依次执行

2.网络拦截器可能执行多次


所有拦截器:

Application拦截器

retryAndFollowUpInterceptor 重定向和失败后重新请求拦截器

BridgeInterceptor 网桥拦截器

CacheInterceptor 缓存处理拦截器

ConnectInterceptor Socket层的握手链接拦截器

networkInterceptors 网络拦截器

CallServerInterceptor client和Server之前的读写操作


自定义拦截器可以:

1.URL重定向

2.请求体数据加密

https://www.jianshu.com/p/da4a806e599b

https://www.jianshu.com/p/eaee7cd227cd

8.Retrofit

优点:超级解耦,包含动态代理、适配器模式、策略模式、装饰者模式等大量的解耦思路

https://blog.csdn.net/stven_king/article/details/51839537

9.Rxjava

描述:一个链式调用的实现异步操作的开源框架

1.扩展的观察者模式,

Observable被观察者   subscribe订阅   Observer观察者

通过lift()实现Observable的调用及进行变换/铺平,实现链式调用的过程

2.Scheduler——调度器,指定代码的运行线程,包含4种:

Schedulers.immediate,当前线程

Schedulers.newThread,新线程

Schedulers.io,IO

Schedulers.computation,密集型(图像)

10.eventBus

简化了应用程序内各个组件之间进行通信的复杂度

1.三个角色:

Event:事件 

 Subscriber:事件订阅者 

 Publisher:事件的发布者

2.四种线程模型,指定线程:POSTING MAIN BACKGROUND ASYNC

https://www.jianshu.com/p/e7d5c7bda783

https://www.jianshu.com/p/d9516884dbd4

11.RecyclerView四级缓存

https://blog.csdn.net/HJsir/article/details/81485653

public final class Recycler {

//一级缓存中用来存储屏幕中显示的ViewHolder

final ArrayList<ViewHolder> mAttachedScrap = new ArrayList<ViewHolder>();

private ArrayList<ViewHolder> mChangedScrap = null;

//二级缓存中用来存储屏幕外的缓存

final ArrayList<ViewHolder> mCachedViews = new ArrayList<ViewHolder>();

private int mViewCacheMax = DEFAULT_CACHE_SIZE;

//四级缓存当屏幕外缓存的大小大于2,便放入mRecyclerPool中缓存。

private RecycledViewPool mRecyclerPool;

//三级缓存自定义缓存,根据coder自己定义的缓存规则。

private ViewCacheExtension mViewCacheExtension;

SparseArray<ScrapData> mScrap = new SparseArray<>();

SparseArray与和HasmMap做对比

ArrayList和LinkedList做对比

12.listview复用机制

RecycleBin 中存放了需要复用的view,一开始里面是空的,当绘制完毕之后,会被添加到RecycleBin,此时convertView不为空

12.注解

本质就是一个继承了 Annotation 接口的接口

类似xml的标签语句,可以给方法加标签,通过方法名返回注解属性值

实现原理是:虚拟机在编译的时候就会将注解写入元素属性表,在运行的时候,采用 JDK 动态代理机制生成一个目标注解的代理类

将元素取出来,交给AnnotationInvocationHandler处理执行

13.fragment生命周期

onAttach()

onCreate()

onCreateView()

---------------------------------------------->Activity.onCreate()

onActivityCreated()

onstart()

onresume()

...

onpause()

onStop()

onDestroyView()

onDestroy()

onDetach()

--------------------------------->Activity.onDestroy()

14.View事件分发流程

https://www.cnblogs.com/smyhvae/p/4802274.html

ViewGroup分为:

onDispatchEvent()

onInterceptTouchEvent()

onTouchEvent()

内部分为:

DOWN-MOVE-UP-LongClick-Click

15.图片请求框架

Glide with(context).load(url).into()

优点:多种图片格式的缓存,适用于更多的内容表现形式(如Gif、WebP、缩略图、Video) * 生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求) * 高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力) * 高效的缓存策略,灵活(Picasso只会缓存原始尺寸的图片,Glide缓存的是多种规格),加载速度快且内存开销小(默认Bitmap格式的不同,使得内存开销是Picasso的一半)

16.synchronized与lock区别

17,http相关


18. 匿名内部类

1.内部类对象的创建依赖于外部类对象;

2 内部类对象持有指向外部类对象的引用。

https://blog.csdn.net/qq_27888773/article/details/78333841

19.三次握手和四次挥手

https://blog.csdn.net/qq_38950316/article/details/81087809




19.三次握手和四次挥手

RecyclerView缓存:

Recyclerview有四级缓存,分别是mAttachedScrap(屏幕内),mCacheViews(屏幕外),mViewCacheExtension(自定义缓存),mRecyclerPool(缓存池)

链接:https://www.jianshu.com/p/443d741c7e3e

20.类加载

加载-链接-初始化-使用-卸载

加链初始卸

https://www.jianshu.com/p/dd39654231e0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容