【Android】Activity知識點

目錄

生命週期

常見場景

進程優先級

橫豎屏

1、android:configChanges設置orientation或orientation|keyboardHidden或不填

2、android:configChanges設置有orientation|screenSize

啓動模式

1、standard

2、singleTop

3、singleTask

4、singleInstance

Activity通信

1、Activity到Activity

2、Activity到Service(案例)

3、Activity到Fragment


生命週期

onCreate():Activity第一次啓動時執行;

onStart():Activity正在被啓動;

onResume():Activity可見並能進行交互;

onPause():Activity可見但失去焦點的時候執行;

onStop():Activity不可見;

onRestart():Activity沒有被銷燬的時候重新啓動;

onDestroy():Activity被銷燬;

常見場景

Activity啓動:onCreate()->onStart()->onResume()

跳轉其他界面:onPause()->onStop()

返回Activity:onRestart()->onStart()->onResume()

退出Activity:onPause()->onStop()->onDestroy()

進程優先級

1、前臺進程:與用戶正在交互的Activity所在進程;

2、可見進程:Activity可見但沒有在前臺所在進程;

3、服務進程:Activity在後臺啓動Service所在進程;

4、後臺進程:Activity完全處於後臺所在進程;

5、空進程:沒有任何Activity存在的進程,最先被回收;

橫豎屏

android:screenOrientation屬性:

portrait:始終豎屏顯示

landscape:始終橫屏顯示

 

android:configChanges屬性:

orientation:消除橫豎屏影響

keyboardHidden:消除鍵盤影響

screenSize:消除屏幕大小影響

1、android:configChanges設置orientation或orientation|keyboardHidden或不填

橫豎屏切換生命週期:onPause()->onSaveInstanceState()->onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState()->onResume()

2、android:configChanges設置有orientation|screenSize

橫豎屏切換不走生命週期,回調onConfigurationChanged()

啓動模式

1、standard

系統默認啓動模式,每次激活都會創建Activity放入任務棧;

使用場景:

哪個任務棧Activity啓動就在哪個任務棧;

2、singleTop

棧頂複用模式,只要棧頂沒有這個Activity就創建放入棧頂,否則複用,同時onNewIntent()被回調;

使用場景:

在當前Activity,同時收到通知,點擊通知再打開當前Activity,爲防止重複打開可使用singleTop重寫onNewIntent();其他程序調用singleTop的Activity,5.0之前與standard一樣在調用者棧中,5.0之後放入新棧。

3、singleTask

單例實例模式,只要棧中有Activity就將其提到棧頂複用,上方Activity出棧,同時回調onNewIntent();

使用場景:

一般用於首頁,調用singleTask的Activity時會把其上的Activity出棧。

4、singleInstance

單獨任務棧實例模式,只要所有棧中有Activity就能被複用,否則單獨創建任務棧放這個Activity;

使用場景(案例):

A1->A2(singleInstance),Home返回首頁後再點擊應用圖標顯示A1,A2在另一個單獨任務棧,應用圖標對應主任務棧(taskAffinity);

startActivity啓動A1->A2->A3(singleInstance)->A4,back返回到A2,再back返回A1,再back才返回A3;A1->A2->A3(singleInstance startActivityForResult)->A4,5.0以前返回順序A2,A1,A3,5.0之後A3,A2,A1;

Activity通信

1、Activity到Activity

1.1 Intent,startActivity(intent)

1.2 類靜態變量

1.3 全局變量,單獨一個靜態變量類

2、Activity到Service(案例

2.1 Intent,startService(intent)和stopService(intent),Service#onStartCommand獲取數據

2.2 bindService,用ServiceConnection接口

3、Activity到Fragment

3.1 Bundle,Fragment#setArguments(bundle)

3.2 Fragment中定義方法,Activity直接調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章