W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
默認(rèn)啟動模式. 每個發(fā)送的 Intent 都會創(chuàng)建一個新的 Activity, 并且將其放入任務(wù)棧棧頂, 而不管這個 Activity 是否已經(jīng)存在. Activity 的啟動三回調(diào)( onCreate()->onStart()->onResume() )都會執(zhí)行. 也就是說每次都創(chuàng)建一個新的實例.
如果新 Activity 已經(jīng)位于任務(wù)棧的棧頂, 那么此 Activity 不會被重新創(chuàng)建, 所以它的啟動三回調(diào)就不會執(zhí)行, 同時 Activity 的 onNewIntent() 方法會被回調(diào). 如果 Activity 已經(jīng)存在卻不在棧頂, 那么作用和標(biāo)準(zhǔn)模式一樣, 一個新的 Activity 會被創(chuàng)建并放到棧頂.
在這個模式下, 我們必須同時在 onCreate() 和 onNewIntent() 兩個方法中處理好傳入的 Intent.
比如搜索功能. 當(dāng)用戶在搜索條中搜索完會跳轉(zhuǎn)到 SearchActivity 查看搜索結(jié)果. 通常, 我們在結(jié)果頁面的頂端也會放置一個同樣的搜索條, 這樣用戶就不需要回退就可以進(jìn)行相同的搜索.
如果是 standard 模式, 搜索十次就會在棧里創(chuàng)建了十個 SearchActivity 實例, 同時用戶需要按十次回退鍵才能回到之前的頁面. 這明顯比較二.
如果是 singleTop 模式, 當(dāng)在搜索結(jié)果界面時, SearchActivity 處在棧的頂端. 所以我們只需要發(fā)送 Intent 到已經(jīng)存在的 SearchActivity 實例, 更新頁面的結(jié)果就足夠了, 不需要創(chuàng)建新的 Activity. 同時只需要按一次回退就能回到之前的頁面.
如果棧中任意位置已經(jīng)有一個 Activity 實例, 那么這個 Activity 就會被調(diào)到棧頂, 始終保持一個實例, 同時回調(diào) onNewIntent() , 并且 singleTask 會清理在當(dāng)前 Activity 上面的所有 Activity.
這個模式和 singleTask 很接近, 只會有一個實例存在. 不同點(diǎn)是持有這個 Activity 的 Task 不能再有其他 Activity 的實例了.
如果從這個 Activity 中啟動另外一個不同的 Activity, 將會自動創(chuàng)建一個新的 Task 來存放新的 Activity.
如果從一個已經(jīng)存在許多 Activity 的 Task 中調(diào)用 singleInstance Activity. 這個新 Activity 同樣會被放在一個新的 Task 中.
來源:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: