凌宇的android備忘錄
- Android原有技術(shù)的深入
- Android Ar Vr 的學(xué)習(xí) 這個東西要從今天開始
- Android 軟硬件 結(jié)合
生命周期
- onStart 和onResume 、onPause 和onStop 感覺差不多,但是他們有什么區(qū)別呢?
其實他們2對都是差不多的,只是onstart和onStop是從Activity是否可見這個角度來說的,而onResume和onPause是從activiy是否位于前臺這個角度來說的
可以簡單地理解為:onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)和 onRestoreInstanceState(Bundle savedInstanceState)只會在app異常終止地情況下被調(diào)用,而其他情況下他們不會被調(diào)用
棧:后進先出(吃了吐)
隊列:先進先出(吃了拉)-
Activity的四大啟動模式:standard、singleTop、singleTask、singleInstance
- standard 標(biāo)準(zhǔn)啟動模式:每次啟動activity都會創(chuàng)建一個新的實例,不管這個實例是否會存在;在這種啟動模式下,誰啟動了這個activity,那么這個activity就會運行在啟動他的那個activity所在的棧中
- singleTop 棧頂復(fù)用模式:如果新的activity已經(jīng)位于任務(wù)棧的棧頂,那么這個activity不會被重復(fù)創(chuàng)建,同時會回調(diào)他的onNewIntent()方法,而且它的oncreate,onstart方法也不會被調(diào)用;但是如果該activity不是位于棧頂?shù)脑?,則會被重復(fù)創(chuàng)建。
- singleTask棧內(nèi)復(fù)用方法:只要activity在一個棧內(nèi)存在,那么多次啟動此activity都不會重復(fù)創(chuàng)建實例,同樣,系統(tǒng)也會回調(diào)onNewIntent()方法,如果棧內(nèi)有其他activity,那么具有這個屬性的activity會清除掉所有在它上方的activity,從而使自己處于棧頂
- singleInstance 單實例模式:具有singleTask的所有特性,但是該啟動模式的activity只能單純地處于一個任務(wù)棧里面。
IPC 跨進程通信
- android使用多進程只有一個方法:在AndroidManifest.xml中給4大組件(Activity,Service,Receiver,ContentProvider) 通過指定android:proccess屬性。 Ps: 其實還有另外一種方法:通過jni在native層fork一個新的進程
- 如果兩個東西(四大組件之一)跑在了不同的進程里面,那么通過內(nèi)存來共享數(shù)據(jù)的方法肯定都是會失敗的,因為android的機制來說,不同的進程對應(yīng)了不同的虛擬機,不同的虛擬機對應(yīng)了不同的內(nèi)存(內(nèi)存都不同了,通過內(nèi)存來進行共享數(shù)據(jù),怎么可能會成功呢?)
- 靜態(tài)成員和單例模式完全失效
- 線程同步機制完全失效
- sharedPreferences的可靠性下降
- Application會被多次創(chuàng)建
- 進程間通信的方法:
- 進程間通信的方法:
- Messenger
- Aidl
- ContentProvider
- Socket

四種方式的差別

image.png

自定義View.png
adb 命令行
- 如果在cmd中遇到了Permission denied 權(quán)限問題 可以動態(tài)申請root權(quán)限:** su root**