【學(xué)習(xí)記錄】安卓開發(fā)相關(guān)總結(jié)

我安卓開發(fā)也有段時(shí)間了,但不做總結(jié)的話,也是會(huì)忘記的。
在此我對(duì)自己使用過的部分組件,先做個(gè)文字總結(jié)。
等后期我有時(shí)間了,就做幾期視頻來講一下,
主要講如何使用,原理相關(guān)的講的不深。

Retrofit:
Retrofit通過java接口和注解來描述的網(wǎng)絡(luò)連接,然后通過client來
來設(shè)置請(qǐng)求頭,如果要監(jiān)聽網(wǎng)絡(luò)請(qǐng)求就在client里面創(chuàng)個(gè)方法,使用的是Okhttp來處理請(qǐng)求頭和消息監(jiān)聽等操作。之后再調(diào)用addCallAdapterFactory,addConverterFactory來設(shè)置Rxjava和Gson用于處理網(wǎng)絡(luò)獲取的數(shù)據(jù),通過設(shè)置好的接口,來設(shè)置網(wǎng)絡(luò)域名類等信息。
之后使用接口回調(diào)并設(shè)置好Disposable來解決網(wǎng)絡(luò)獲取不統(tǒng)一的問題。

說一下你是如何使用Flowable背壓式和Disposable優(yōu)化網(wǎng)絡(luò)性能的:
在設(shè)置網(wǎng)址的接口里,把屬性改成Flowable,F(xiàn)lowable里自帶Disposable的背壓操作。
當(dāng)數(shù)據(jù)處理不過來時(shí),它就不會(huì)去處理后續(xù)的請(qǐng)求。

說一下你是怎么設(shè)置靜態(tài)壁紙的:
調(diào)用的安卓自帶的組件,因?yàn)槲疫@邊項(xiàng)目的畫板功能是自定義View寫的,保存的時(shí)候,第一次是Bitmap類型,所以我用的這個(gè)WallpaperManager。

說一下你是如何集成的三方極光推送、友盟:
極光推送和友盟的話,是看的文檔接入的,配置好清單文件和初始化操作,就可以到控制臺(tái)里,推送自己需要的消息。

說一下自定義View:
自制案例:https://github.com/17396743/Canvas_View
(案例里有寫大量注釋)
1、View的流程主要是measure測(cè)量,layout布局,draw繪制。其中measure確定View測(cè)量的寬高,layout確定View最終的寬高和四個(gè)頂點(diǎn)的位置,而draw是將View繪制到屏幕上。
2、MotionEvent是什么?包含幾種事件,什么條件下會(huì)產(chǎn)生?
MotionEvent是處理手指后產(chǎn)生的系列事件。有四種事件,分別是剛接觸屏幕、在屏幕上移動(dòng)、從屏幕上松開、保持按下操作從當(dāng)前控件轉(zhuǎn)移到外層控件這個(gè)事件
3、?invalidate()和postInvalidate()的區(qū)別 ?
都是用來刷新View主要區(qū)別是invalidate()可以在主線程使用,子線程需要配合handler,而postInvalidate()可以直接在子線程使用。
4、SurfaceView和View的區(qū)別?
View和SurfaceView都是處理頁(yè)面,區(qū)別在于View是主動(dòng)刷新頁(yè)面,而SurfaceView是被動(dòng)處理。
5、自定義View如何考慮機(jī)型適配 ?
合理使用warp_content,match_parent
盡量是使用RelativeLayout相對(duì)布局
針對(duì)不同的機(jī)型,使用不同的布局文件放在對(duì)應(yīng)的目錄下,android會(huì)自動(dòng)匹配
使用與密度無關(guān)的像素單位dp,sp

說一下RenderScript是怎么使用的:
創(chuàng)建一個(gè)RenderScript對(duì)象
創(chuàng)建一個(gè)RenderScript里面的一個(gè)工具ScriptIntrinsicBlur
通過Allocatin將要渲染的圖片臨時(shí)存儲(chǔ)到內(nèi)存中
調(diào)用ScriptIntrinsicBlur來控制模糊
調(diào)用Allocatin輸出圖片
?

說一下融云IM文字聊天是怎么接入的:
下載離線文件,直接通過添加Model的方式加載SDK
項(xiàng)目里主要加了帶UI單聊功能,
后面的功能實(shí)現(xiàn)是看的文檔一步步來的。

融云IM它獲取Token比較簡(jiǎn)單,驗(yàn)證是用的
隨機(jī)數(shù)、當(dāng)前的時(shí)間戳、數(shù)據(jù)簽名,還有一個(gè)由Appkey+隨機(jī)數(shù)+當(dāng)前的時(shí)間戳組成的字符串轉(zhuǎn)成SHA1 哈希值 的 Token。
這一步文檔里有提示。

注冊(cè)信息是接入了創(chuàng)藍(lán)萬數(shù)的閃驗(yàn) ,通過驗(yàn)證后,就可以獲取到當(dāng)前用戶的個(gè)人信息。
類似粉絲數(shù)、作品數(shù)等數(shù)據(jù)是傳到后臺(tái)自己的服務(wù)器。