知識點(diǎn)總結(jié)

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相關(guān)總結(jié)

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個(gè)問題

view的繪制流程

http://www.reibang.com/p/705a6cb6bfee

每一個(gè)Activity包含一個(gè)PhoneWindow,DecorView是PhoneWindow類的內(nèi)部類,是所有View的根View

measure() MeasureSpec?

EXACTLY 精準(zhǔn)模式颗胡,match_parent或固定值

AT_MOST ?最大模式,wrap_content

UNSPECIFIED 無限制模式舒憾,系統(tǒng)內(nèi)部使用

layout() setFrame() 上下左右4個(gè)位置的相對位置

draw() 視圖的繪制工作 繪制背景巷蚪、自身view以及子view


touch事件分發(fā)

5.handler事件分發(fā)過程

handler message looper messageQueue

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

每個(gè)線程只能有一個(gè)Looper對象,多個(gè)線程可以公用looper

所謂主線程啦扬,只不過比子線程中多了一個(gè)looper中狂,我們的UI線程在只能在主線中刷新,就是應(yīng)為線程的loop方法不斷輪詢繪制的原因扑毡,子線程之所有不能刷新UI胃榕,是因?yàn)樽泳€程沒有l(wèi)oop方法,如果我們把子線程中設(shè)置一個(gè)looper瞄摊,那么子線程也是可以刷新繪制UI的

6.設(shè)計(jì)模式總結(jié)

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

1.適配器模式:接口轉(zhuǎn)換勋又,解決接口兼容問題

例如:FileInputStream ->InputStreamReader ,字節(jié)流轉(zhuǎn)換成Reader子類换帜,從而有了讀取的能力

2.裝飾者模式:動態(tài)的給對象增加新的功能

InputStreamReader -> BufferedReader楔壤,從讀取一個(gè)字符增加了讀取一行字符的能力

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

JDK 自帶的動態(tài)代理:一定要實(shí)現(xiàn)接口惯驼,通過InvocationHandler 處理器接口蹲嚣,通過invoke對應(yīng)方法實(shí)現(xiàn)代理訪問

Cglib動態(tài)代理:不要求類實(shí)現(xiàn)接口

7.okhttp

描述:輕量級處理網(wǎng)絡(luò)請求的開源框架,自動處理Gzip壓縮祟牲,減少數(shù)據(jù)流量的消耗隙畜,連接池,共享Socket说贝,還能自定義攔截器

自定義攔截器分為兩種:

1)ApplicationInterceptor(應(yīng)用攔截器)

2)NetworkInterceptor(網(wǎng)絡(luò)攔截器)

1.都能對Response進(jìn)行攔截,但是執(zhí)行順序不同议惰,前者最先執(zhí)行,多個(gè)攔截器會按照list中的順序依次執(zhí)行

2.網(wǎng)絡(luò)攔截器可能執(zhí)行多次


所有攔截器:

Application攔截器

retryAndFollowUpInterceptor?重定向和失敗后重新請求攔截器

BridgeInterceptor?網(wǎng)橋攔截器

CacheInterceptor?緩存處理攔截器

ConnectInterceptor?Socket層的握手鏈接攔截器

networkInterceptors 網(wǎng)絡(luò)攔截器

CallServerInterceptor?client和Server之前的讀寫操作


自定義攔截器可以:

1.URL重定向

2.請求體數(shù)據(jù)加密

http://www.reibang.com/p/da4a806e599b

http://www.reibang.com/p/eaee7cd227cd

8.Retrofit

優(yōu)點(diǎn):超級解耦乡恕,包含動態(tài)代理言询、適配器模式俯萎、策略模式、裝飾者模式等大量的解耦思路

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

9.Rxjava

描述:一個(gè)鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn)異步操作的開源框架

1.擴(kuò)展的觀察者模式倍试,

Observable被觀察者 ??subscribe訂閱 ??Observer觀察者

通過lift()實(shí)現(xiàn)Observable的調(diào)用及進(jìn)行變換/鋪平讯屈,實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的過程

2.Scheduler——調(diào)度器,指定代碼的運(yùn)行線程,包含4種:

Schedulers.immediate县习,當(dāng)前線程

Schedulers.newThread涮母,新線程

Schedulers.io,IO

Schedulers.computation,密集型(圖像)

10.eventBus

簡化了應(yīng)用程序內(nèi)各個(gè)組件之間進(jìn)行通信的復(fù)雜度

1.三個(gè)角色:

Event:事件?

?Subscriber:事件訂閱者?

?Publisher:事件的發(fā)布者

2.四種線程模型躁愿,指定線程:POSTING MAIN BACKGROUND ASYNC

http://www.reibang.com/p/e7d5c7bda783

http://www.reibang.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;

//四級緩存當(dāng)屏幕外緩存的大小大于2叛本,便放入mRecyclerPool中緩存。

private RecycledViewPool mRecyclerPool;

//三級緩存自定義緩存彤钟,根據(jù)coder自己定義的緩存規(guī)則来候。

private ViewCacheExtension mViewCacheExtension;

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

SparseArray與和HasmMap做對比

ArrayList和LinkedList做對比

12.listview復(fù)用機(jī)制

RecycleBin 中存放了需要復(fù)用的view,一開始里面是空的逸雹,當(dāng)繪制完畢之后营搅,會被添加到RecycleBin,此時(shí)convertView不為空

12.注解

本質(zhì)就是一個(gè)繼承了 Annotation 接口的接口

類似xml的標(biāo)簽語句梆砸,可以給方法加標(biāo)簽转质,通過方法名返回注解屬性值

實(shí)現(xiàn)原理是:虛擬機(jī)在編譯的時(shí)候就會將注解寫入元素屬性表,在運(yùn)行的時(shí)候帖世,采用 JDK 動態(tài)代理機(jī)制生成一個(gè)目標(biāo)注解的代理類

將元素取出來休蟹,交給AnnotationInvocationHandler處理執(zhí)行

13.fragment生命周期

onAttach()

onCreate()

onCreateView()

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

onActivityCreated()

onstart()

onresume()

...

onpause()

onStop()

onDestroyView()

onDestroy()

onDetach()

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

14.View事件分發(fā)流程

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

ViewGroup分為:

onDispatchEvent()

onInterceptTouchEvent()

onTouchEvent()

內(nèi)部分為:

DOWN-MOVE-UP-LongClick-Click

15.圖片請求框架

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

優(yōu)點(diǎn):多種圖片格式的緩存,適用于更多的內(nèi)容表現(xiàn)形式(如Gif日矫、WebP赂弓、縮略圖、Video) * 生命周期集成(根據(jù)Activity或者Fragment的生命周期管理圖片加載請求) * 高效處理Bitmap(bitmap的復(fù)用和主動回收哪轿,減少系統(tǒng)回收壓力) * 高效的緩存策略盈魁,靈活(Picasso只會緩存原始尺寸的圖片,Glide緩存的是多種規(guī)格)窃诉,加載速度快且內(nèi)存開銷斜赴!(默認(rèn)Bitmap格式的不同,使得內(nèi)存開銷是Picasso的一半)

16.synchronized與lock區(qū)別

17褐奴,http相關(guān)


18. 匿名內(nèi)部類

1.內(nèi)部類對象的創(chuàng)建依賴于外部類對象;

2 內(nèi)部類對象持有指向外部類對象的引用于毙。

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

19.三次握手和四次揮手

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




19.三次握手和四次揮手

RecyclerView緩存:

Recyclerview有四級緩存敦冬,分別是mAttachedScrap(屏幕內(nèi)),mCacheViews(屏幕外)唯沮,mViewCacheExtension(自定義緩存)脖旱,mRecyclerPool(緩存池)

鏈接:http://www.reibang.com/p/443d741c7e3e

20.類加載

加載-鏈接-初始化-使用-卸載

加鏈初始卸

http://www.reibang.com/p/dd39654231e0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堪遂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子萌庆,更是在濱河造成了極大的恐慌溶褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件践险,死亡現(xiàn)場離奇詭異猿妈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巍虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門彭则,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人占遥,你說我怎么就攤上這事俯抖。” “怎么了瓦胎?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵芬萍,是天一觀的道長。 經(jīng)常有香客問我搔啊,道長柬祠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任坯癣,我火速辦了婚禮瓶盛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘示罗。我一直安慰自己惩猫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布蚜点。 她就那樣靜靜地躺著轧房,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绍绘。 梳的紋絲不亂的頭發(fā)上奶镶,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音陪拘,去河邊找鬼厂镇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛左刽,可吹牛的內(nèi)容都是我干的捺信。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼欠痴,長吁一口氣:“原來是場噩夢啊……” “哼迄靠!你這毒婦竟也來了秒咨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤掌挚,失蹤者是張志新(化名)和其女友劉穎雨席,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吠式,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陡厘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奇徒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏亚。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摩钙,靈堂內(nèi)的尸體忽然破棺而出罢低,到底是詐尸還是另有隱情,我是刑警寧澤胖笛,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布网持,位于F島的核電站,受9級特大地震影響长踊,放射性物質(zhì)發(fā)生泄漏功舀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一身弊、第九天 我趴在偏房一處隱蔽的房頂上張望辟汰。 院中可真熱鬧,春花似錦阱佛、人聲如沸帖汞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翩蘸。三九已至,卻和暖如春淮逊,著一層夾襖步出監(jiān)牢的瞬間催首,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工泄鹏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郎任,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓备籽,卻偏偏與公主長得像涝滴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容