Android(三)Activity 基礎(chǔ)知識

Activity 是什么

? ??activity是?Android 組件?中最基本也是最為常見用的 四大組件 之一。Android?四大組件有 Activity,Service 服務(wù),ContentProvider?內(nèi)容提供,BroadcastReceiver 廣播接收器。

????Activity是一個應(yīng)用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務(wù)。

????Activity中所有操作都與用戶密切相關(guān),是一個負(fù)責(zé)與?用戶交互?的組件,可以通過 setContentView(View) 來顯示指定控件。

????在一個android應(yīng)用中,一個 Activity 通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)。Activity之間通過Intent進(jìn)行通信。


Activity? 的創(chuàng)建

? ? 分為三部

? ? ? ? 1 創(chuàng)建?Activity?

1

? ? ? ? 2 在 manifest 中注冊?activity

主入口特有

? ? ? ? 3 關(guān)聯(lián)布局

Activity 和 layout? 進(jìn)行關(guān)聯(lián)布局

Activity 之間的跳轉(zhuǎn)

? ? ? ???Intent 類

布局
Intent?

? ? 注意: 需要在?manifest 中注冊?activity (一般都是自動注冊的)。


Activity? 4 種啟動模式

????Activity 存放 在 棧中,?Activity 之間的跳轉(zhuǎn)?就像?出棧??入棧?一樣,這是 系統(tǒng)默認(rèn)的 啟動模式;

Activity 之間的跳轉(zhuǎn)

? ? 4 種啟動模式

? ? ? ? 1 standard

standard

? ? ? ? 2 singleTop

? ? ? ? ? ? 頂部復(fù)用模式

頂部復(fù)用模式

? ? ? ? 3 singleTask

? ? ? ? 4 singleInstance

? ? 如何設(shè)置模式

? ? ? ? 1?manifest 中設(shè)置

manifest?

? ? ? ? 2 在代碼中設(shè)置

?在代碼中設(shè)置

Activity 的生命周期

? ? 類比 Vue 、React 的生命周期

生命周期
生命周期
生命周期

Activity 之間數(shù)據(jù)的傳遞

? ? 頁面跳轉(zhuǎn)傳參

? ? ? ? 可以傳遞 多種數(shù)據(jù)結(jié)構(gòu)

第一個頁面

? ? ? ? ? ? 注意 當(dāng)傳遞 序列化的數(shù)據(jù),該類需要?implements Serializable

?序列化的數(shù)據(jù)

? ? 第二個頁面 接受參數(shù)

? ? ? ? 在?onCreate 生命周期 中

?? 第二個頁面

當(dāng)我們需要回傳數(shù)據(jù)的時候

? ? 關(guān)閉頁面將數(shù)據(jù)回傳到原來的頁面

? ? ? ? ? ? 步驟

? ? ? ? ? ? ? ? 1 第一個頁面 使用 startActivityForResult

startActivityForResult

? ? ? ? ? ? ? ? 2 第二個頁面 使用 setResult 返回數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? 可以選擇 關(guān)閉頁面的 生命周期 或者 退后按鈕事件中 返回數(shù)據(jù)

? ? ? ? ? ? ? ? 3 第一個頁面?onActivityResult 監(jiān)聽結(jié)果返回的 事件

onActivityResult?

Fragment

? ? ? ? 設(shè)計思想

? ??????? 做不同屏幕的適配, 模塊化可復(fù)用,就跟?React 和 Vue 的組件類似

? ? ? ? Fragment? 和 Activity 的區(qū)別

? ? ? ? ? ? 1 Fragment 是到 Android 3.0+ 以后才出現(xiàn);

? ? ? ? ? ? 2 一個 Activity 可以運(yùn)行多個?Fragment;

? ? ? ? ? ? 3?Fragment 不能脫離 Activity 而存在;

? ? ? ? ? ? 4 Activity 是屏幕的主題,而?Fragment 是 Activity 的一個組成元素;


使用方式

? ? ? ? 靜態(tài)加載: XML

? ? ? ? ? ? 步驟

? ? ? ? ? ? ? ? 1 編寫 fragment 的 布局;

xml

? ? ? ? ? ? 2 編寫 fragment 類

應(yīng)用布局

? ? ?3 在主 Activity 中應(yīng)用 fragment

? ? ? ?注意 name 是 fragment 的 全路徑

????動態(tài)加載: Java code?

? ? ? ? 步驟 1?

? ? ? ? ? 同靜態(tài)加載 還是要先把 fragment 的類 和 布局寫好

? ? ? ? 步驟 2?

? ? ? ? ? 需要加載 fragment 的 Activity 的布局文件 需要 寫好 占位的 控件;

以后會被 fragment 替換

Fragment 傳值

? ?類比 Vue 和 React 的 父子組件傳值;

? ?Activity -----> Fragment 傳值

? ? ? ? 使用?setArguments 方法

fragment 中
主 Activity 中?onCreate 方法 傳參數(shù)

? ? 類比 React 的 state, 首先 聲明 state, 然后父組件中 傳入?yún)?shù), 這樣 子組件就能拿到參數(shù)并使用, 注意 在不同的生命周期中獲??;


? ?Fragment?----->?Activity?傳值

? ? ? ? 使用 Callback

Fragment? 中
Activity 中

通過 將 主 Activity 的 this 傳入, 并且 主 Activity 實現(xiàn)了 onClick 方法?

mOnTitleClickListener 就是 this,直接 調(diào)用了 Activity 的 onclick 方法,拿到了 fragment 的傳遞的參數(shù) title;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容