android純干貨

1:svn在什么情況下會(huì)導(dǎo)致一個(gè)文件提交不了

2:git分支的原理,和svn有什么區(qū)別

3:LeakCanary是哪個(gè)開發(fā)的

4:什么是注解

5:Butter Knife中最新的采用的是什么原理?

6:rx+retrofit在網(wǎng)絡(luò)請(qǐng)求后返回的格式是什么格式?怎么用rx統(tǒng)一封裝后臺(tái)返回的{result:200,data:xxxx},表單提交時(shí)候的關(guān)鍵字是什么

7:反射時(shí)候是否可以反射到私有屬性?

8:自定義控件中分為哪幾種,android內(nèi)核啟動(dòng)的原理過程描述.

9:熱修復(fù)的原理

10:減小apk的方法有哪些


1:svn在什么情況下會(huì)導(dǎo)致一個(gè)文件提交不了?

假設(shè)a,b用戶和服務(wù)器,服務(wù)器對(duì)于text.class文件的版本號(hào)是20,然后a,b用戶也是版本為20的text.class,這時(shí)候如果b用戶在text.class中添加了文件,然后提交服務(wù)器,此時(shí)服務(wù)器的text.class版本為21,當(dāng)a用戶執(zhí)行修改本地text.class時(shí)候然后提交就是提示沖突,因?yàn)閍用戶當(dāng)面的text.class為20,解決辦法就是update或者對(duì)當(dāng)前文件revert.

2:git分支的原理,和svn有什么區(qū)別

通過可變指針來實(shí)現(xiàn)對(duì)提交數(shù)據(jù)的歷史版本的控制,每當(dāng)我們提交新的更新,當(dāng)前分支(設(shè)為master)則指向最后一個(gè)提交更新A,而最后一個(gè)提交對(duì)象則存在一個(gè)指針指向前一次的提交更新Q。如果我們創(chuàng)建一個(gè)新的分支,child,它和master共同指向A,這時(shí),如果我們向child分支提交更新B,我們會(huì)發(fā)現(xiàn)child指向B,而master依然指向A。無(wú)論我們?cè)赾hild分支進(jìn)行了任何開發(fā),只要回到master分支,就能恢復(fù)到更新A的數(shù)據(jù)狀態(tài)了。區(qū)別就是1.GIT是分布式的,SVN不是;2.GIT把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件;3:GIT分支和SVN的分支不同;4.GIT沒有一個(gè)全局的版本號(hào),而SVN有;5.GIT的內(nèi)容完整性要優(yōu)于SVN


3:LeakCanary是哪個(gè)開發(fā)的

LeakCanary項(xiàng)目是square公司為Java&Android開發(fā)提供的一個(gè)自動(dòng)檢測(cè)內(nèi)存泄漏的工具

4:什么是注解

用來對(duì)這些元素進(jìn)行說明,注釋,注解是以‘@注解名’在代碼中存在的,1:【生成文檔doc文檔】2:【使用反射】3:實(shí)現(xiàn)基本的編譯檢查【Override】

5:Butter Knife中最新的采用的是什么原理?

Butter Knife最新version:8.2.1,以前的版本通過反射,大量使用反射會(huì)影響App的運(yùn)行性能,造成卡頓以及生成很多臨時(shí)Java對(duì)象更容易觸發(fā)GC,現(xiàn)在通過Java Annotation Processing技術(shù),就是在Java代碼編譯成Java字節(jié)碼的時(shí)候就已經(jīng)處理了@Bind、@OnClick(ButterKnife還支持很多其他的注解)這些注解了.

6:rx+retrofit在網(wǎng)絡(luò)請(qǐng)求后返回的格式是什么格式?怎么用rx統(tǒng)一封裝后臺(tái)返回的{result:200,data:xxxx},表單提交時(shí)候的關(guān)鍵字是什么

rxjava中統(tǒng)一的返回對(duì)象都是Subscriber對(duì)象

public classBase CallModel {

public int errno;

public String?msg;

public T?data;

}

@GET("user/login")

Calll? <CallModel<User>>?doLogin(@Query("email") String email,@Query("password") String pwd);


多文件上傳:

@Multipart

@POST("upload")

xxx

多參數(shù)表單:

@FormUrlEncoded

@POST("login")

xxx

7:反射時(shí)候是否可以反射到私有屬性?

可以;在訪問前防止檢查訪問權(quán)限.

Method method = classType.getDeclaredMethod("sayHello",newClass[] { String.class});

method.setAccessible(true);//抑制Java的訪問控制檢查

8:自定義控件中分為哪幾種,android內(nèi)核啟動(dòng)的原理過程描述.

1:自繪控件,實(shí)現(xiàn)ondraw()

2:組合控件

3:繼承控件

啟動(dòng)原理:

ActivityManagerServices,簡(jiǎn)稱AMS,服務(wù)端對(duì)象,負(fù)責(zé)系統(tǒng)中所有Activity的生命周期

ActivityThread,App的真正入口。當(dāng)開啟App之后,會(huì)調(diào)用main()開始運(yùn)行,開啟消息循環(huán)隊(duì)列,這就是傳說中的UI線程或者叫主線程。與ActivityManagerServices配合,一起完成Activity的管理工作

ApplicationThread,用來實(shí)現(xiàn)ActivityManagerService與ActivityThread之間的交互。在ActivityManagerService需要管理相關(guān)Application中的Activity的生命周期時(shí),通過ApplicationThread的代理對(duì)象與ActivityThread通訊。

ApplicationThreadProxy,是ApplicationThread在服務(wù)器端的代理,負(fù)責(zé)和客戶端的ApplicationThread通訊。AMS就是通過該代理與ActivityThread進(jìn)行通信的。

Instrumentation,每一個(gè)應(yīng)用程序只有一個(gè)Instrumentation對(duì)象,每個(gè)Activity內(nèi)都有一個(gè)對(duì)該對(duì)象的引用。Instrumentation可以理解為應(yīng)用進(jìn)程的管家,ActivityThread要?jiǎng)?chuàng)建或暫停某個(gè)Activity時(shí),都需要通過Instrumentation來進(jìn)行具體的操作。

ActivityStack,Activity在AMS的棧管理,用來記錄已經(jīng)啟動(dòng)的Activity的先后關(guān)系,狀態(tài)信息等。通過ActivityStack決定是否需要啟動(dòng)新的進(jìn)程。

ActivityRecord,ActivityStack的管理對(duì)象,每個(gè)Activity在AMS對(duì)應(yīng)一個(gè)ActivityRecord,來記錄Activity的狀態(tài)以及其他的管理信息。其實(shí)就是服務(wù)器端的Activity對(duì)象的映像。

TaskRecord,AMS抽象出來的一個(gè)“任務(wù)”的概念,是記錄ActivityRecord的棧,一個(gè)“Task”包含若干個(gè)ActivityRecord。AMS用TaskRecord確保Activity啟動(dòng)和退出的順序。如果你清楚Activity的4種launchMode,那么對(duì)這個(gè)概念應(yīng)該不陌生。

9:熱修復(fù)的原理

資源替換

類替換(四大組件、類)

SO補(bǔ)丁

PathClassLoader:通過Context getClassLoader()獲取。

DexClassLoader:通過構(gòu)造函數(shù)new DexClassLoader()獲取。

10:減小apk的方法有哪些


壓縮圖片,對(duì)圖片進(jìn)行有損壓縮;

放棄一些圖片資源;

so在gradle中配置

開啟gradle minifyenabled:ture

....................

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容