1、JVM和DVM之間的區(qū)別:
- dvm執(zhí)行的是.dex格式文件 jvm執(zhí)行的是.class文件 android程序編譯完之后生產(chǎn).class文件,然后,dex工具會(huì)把.class文件處理成.dex文件,然后把資源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm執(zhí)行的是.class文件。
- dvm是基于寄存器的虛擬機(jī) 而jvm執(zhí)行是基于虛擬棧的虛擬機(jī)。寄存器存取速度比??斓亩啵琩vm可以根據(jù)硬件實(shí)現(xiàn)最大的優(yōu)化,比較適合移動(dòng)設(shè)備。
- class文件存在很多的冗余信息,dex工具會(huì)去除冗余信息,并把所有的.class文件整合到.dex文件中。減少了I/O操作,提高了類的查找速度。
2、Activity生命周期

Activity的生命周期.png
3、Activity啟動(dòng)模式

Activity啟動(dòng)模式.png
4、協(xié)程
協(xié)程是一種編程思想,并不局限于特定的語(yǔ)言。可以簡(jiǎn)單的理解為線程框架。它是基于線程封裝的一套更上層的工機(jī)具庫(kù),可以使用kotlin協(xié)程庫(kù)提供的api更方便的指定協(xié)程中代碼執(zhí)行的線程、切換線程。但是不需要接觸Thread類。協(xié)程通過非阻塞掛起和恢復(fù)實(shí)現(xiàn)了異步代碼的同步編寫方式,把原本運(yùn)行在不同線程的代碼寫在一個(gè)代碼塊{}里,看起來就像是同步代碼。
協(xié)程也不是為了線程而生的,它是為了解決因?yàn)槎嗑€程帶來的編碼上的不便的問題而出現(xiàn)的。