天天看點

四大元件(1) - Activity

一.四大狀态

running - paused - stopped - killed 

備注:Running狀态和Paused狀态是可見的,Stopped狀态和Killed狀态時不可見的。

二.七大生命周期 

onCreate - onRestart - onStart - onResume - onPause - onStop - onDestory

備注:

以頁面a跳到b為例

1.A頁面onStop()将在B頁面onResume後執行

2.當B頁面為透明、不完全遮擋、Dialog時,A方法不會執行onStop,B傳回後直接執行onResume不會執行onStart.

3.系統記憶體不足、使用者點選Home|Memu鍵、按下電源按鍵 、螢幕切換等情況下 onStop、onDestory可能不觸發

4.onDestory隻在調用finish 和 系統不足情況下才可能觸發。

參照:

生命周期 : https://blog.51cto.com/4397014/2162413

三.四大加載模式

standard、singTop、singTask、singleInstance

1.singTop 處于當棧頂時,不再開啟新的執行個體。常見于點選消息通知欄彈出清單,而singTask常見于首頁面和登入頁面

2.singTask 保證目前應用隻有一個執行個體,并且會将棧中目前位置以上的頁面全部銷毀。

3.singleInstance  保證目前棧隻有一個執行個體。

https://blog.csdn.net/lihappyangel/article/details/51831611 

https://blog.csdn.net/mr_jingfu/article/details/79077613

https://blog.51cto.com/4397014/2162419

四.四大常用方法

1.onSaveInstanceState() 

-當系統“未經你許可”銷毀activity時調用,系統調用順序 

-onPause -> onSaveInstanceState -> onStop

2.onRestoreInstanceState

-activity “确實”被系統銷毀時調用,系統調用順序 

-OnStart() -> onRestoreInstanceState

參考:https://blog.csdn.net/fenggering/article/details/53907654

3.startActivityForResult()  - requestCode 不能為負數 ,當調用Activity的finish()方法,系統會預設resultCode為RESULT_CANCELED

4.onNewIntent() - launchMode設定為standard、singleTask,如果跳轉新的Activity不再建立新的執行個體(不執行onCreate) 會調用onNewIntent方法

參考:常用方法 : https://blog.51cto.com/4397014/2162417

五.橫豎屏 

第一步.在AndroidManifest.xml中加入

android:screenOrientation=”portrait”(豎屏)

android:screenOrientation=”landscape”(橫屏)

第二步.建立2種布局(橫豎)檔案

layout-land 橫屏 

layout-port 豎屏

在 AndroidManifest.xml檔案中加入

android:configChanges=”orientation|keyboardHidden|screenSize”

切屏不會重新調用各個生命周期。

橫豎屏:https://blog.51cto.com/4397014/2162423

configChanges配置高:

https://blog.csdn.net/xiabing082/article/details/41867463

六.啟動方式

顯示調用

(1)通過包名打開一個應用

(2)通過類名打開一個Activity

隐式調用

需要Intent能比對目标元件的IntentFilter中所設定的過濾資訊.如果不比對将無法啟動目标Activity

(1)IntentFilter 有3大要素 - action category  data

(2)1個元件可以配置多個IntentFilter 

參考:intent-filter : https://www.jianshu.com/p/5f644e0fdba9

繼續閱讀