1、Activity生命週期android
在默認的狀況下,Activity不作特殊的處理,那麼當出現異常或者配置發生改變的狀況下,Activity就會被銷燬並從新建立,其onPause、onStop、onDestory均會被調用,因爲是異常狀況下終止的,系統會調用onSaveInstanceState保存當前Activity的狀態,當Activity重建後,系統調用onRestoreInstanceState恢復以前保存的數據,如圖所示:
在內存不足致使優先級低的Activity被kill,優先級從高到底有如下三種:字體
在系統配置發生改變了,不重建Activity,能夠設置android:configChanges參數。在當所指定屬性(Configuration Changes)發生改變時,通知程序調用onConfigurationChanged()函數。設置方法:將下列字段用「|」符號分隔開,例如:「locale|navigation|orientation」ui
2、啓動模式code
啓動模式簡單地說就是Activity啓動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設置;啓動模式有4種,分別爲standard、singleTop、singleTask、singleInstance。xml
3、IntentFilter匹配規則生命週期
啓動Activity分爲兩種,顯示和隱式調用,爲了匹配過濾列表,須要同時匹配過濾列表中的action、category、data信息,不然匹配失敗。內存
<intent-filter> <action android:name="android.intent.action.SEND"/> <action android:name="android.intent.action.SEND_TO"/> </intent-filter>
那麼只要Intent的action爲「SEND」或「SEND_TO」,那麼這個Intent在action方面就能和上面那個 Activity匹配成功。好比咱們的Intent定義以下:
Intent intent = new Intent("android.intent.action.SEND") ; startActivity(intent);
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
<intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <data android:scheme="http"></data> </intent-filter>