1育谬、JVM和DVM之間的區(qū)別:
- dvm執(zhí)行的是.dex格式文件 jvm執(zhí)行的是.class文件 android程序編譯完之后生產(chǎn).class文件挖胃,然后,dex工具會把.class文件處理成.dex文件逆甜,然后把資源文件和.dex文件等打包成.apk文件篡悟。apk就是android package的意思。 jvm執(zhí)行的是.class文件右锨。
- dvm是基于寄存器的虛擬機(jī) 而jvm執(zhí)行是基于虛擬棧的虛擬機(jī)括堤。寄存器存取速度比棧快的多绍移,dvm可以根據(jù)硬件實現(xiàn)最大的優(yōu)化悄窃,比較適合移動設(shè)備。
- class文件存在很多的冗余信息蹂窖,dex工具會去除冗余信息轧抗,并把所有的.class文件整合到.dex文件中。減少了I/O操作瞬测,提高了類的查找速度横媚。
2、Activity生命周期
3月趟、Activity啟動模式
4灯蝴、協(xié)程
協(xié)程是一種編程思想,并不局限于特定的語言孝宗≌狼牵可以簡單的理解為線程框架。它是基于線程封裝的一套更上層的工機(jī)具庫碳褒,可以使用kotlin協(xié)程庫提供的api更方便的指定協(xié)程中代碼執(zhí)行的線程折砸、切換線程。但是不需要接觸Thread類沙峻。協(xié)程通過非阻塞掛起和恢復(fù)實現(xiàn)了異步代碼的同步編寫方式睦授,把原本運(yùn)行在不同線程的代碼寫在一個代碼塊{}里,看起來就像是同步代碼摔寨。
協(xié)程也不是為了線程而生的去枷,它是為了解決因為多線程帶來的編碼上的不便的問題而出現(xiàn)的。