關(guān)于Activity的啟動(dòng)模式的應(yīng)用以及其他類似的處理方式

Activity的啟動(dòng)模式

在android開發(fā)過程中,有些需求的實(shí)現(xiàn)用activity的啟動(dòng)模式的知識(shí)來完成會(huì)很簡單。

比如:

  • 簡單的例子:

防止多次點(diǎn)擊,出現(xiàn)多個(gè)重復(fù)的activity頁面,這時(shí)候就可以簡單的采用singleTop配置來防止處于棧頂?shù)捻撁姹恢貜?fù)打開。

  • 稍微麻煩點(diǎn)兒:

我在完成幾個(gè)頁面的信息選擇之后漠嵌,需要將這幾個(gè)頁面的數(shù)據(jù)回顯到最初的頁面,并且關(guān)閉中間這幾個(gè)選擇頁面:A(目標(biāo)頁)->B(選擇頁面1)->C(選擇頁面2)->...(n個(gè)頁面)后返回A頁面并根據(jù)這些選擇的信息來做處理(回顯等)判哥,這時(shí)候activity的啟動(dòng)模式就起到作用了献雅。

// 方法一 :Manifest文件中不設(shè)置,代碼中設(shè)置Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP(缺一不可)
(Intent.FLAG_ACTIVITY_SINGLE_TOP可以在Manifest中用singleTop設(shè)置替代)
 Intent intent = new Intent(this,A.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
 intent.putExtra("title",title);//帶給A的信息
 intent.putExtra("school",school);//帶給A的信息
 startActivity(intent);

//方法二:在Manifest文件中設(shè)置singleTask的啟動(dòng)模式
 Intent intent = new Intent(this,A.class);
 intent.putExtra("title",title);//帶給A的信息
 intent.putExtra("school",school);//帶給A的信息
 startActivity(intent);

以這種方式重新啟動(dòng)目標(biāo)activity,會(huì)調(diào)用activity的onNewIntent方法塌计,方法一如果丟失了singleTop的配置挺身,雖然可以重新打開目標(biāo)activity,但是不會(huì)調(diào)用onNewIntent的方法锌仅。

其他類似的處理方式

首先這個(gè)類最初是在郭嬸做權(quán)限處理的視頻中看到的

public class ActivityCollector {

    private static List<Activity> activityList = new ArrayList<>();

    /**
     * 將當(dāng)前啟動(dòng)的activity加入list
     */
    public static void addActivity(Activity activity){
        activityList.add(activity);
    }

    /**
     * 將銷毀的activity移出list
     */
    public static void removeActivity(Activity activity){
        activityList.remove(activity);
    }

    /**
     * 獲取棧頂activity
     */
    public static Activity getTopActivity(){
        if(!activityList.isEmpty()){
            return activityList.get(activityList.size()-1);
        }else{
            return null;
        }
    }

    /**
     * 關(guān)閉size個(gè)activity
     */
    public static void finish(int size){
        for(int i=0;i<size;i++){
            if(getTopActivity()!=null){
                getTopActivity().finish();
                removeActivity(getTopActivity());
            }
        }
    }
}

在項(xiàng)目的activity基類中使用ActivityCollector 來構(gòu)造啟動(dòng)activity的集合

public class ABaseActivity extends AppCompatActivity{

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

    /**
     * onDestroy
     * 要去回收資源
     * 做好處理
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

這樣一來你就可以隨意的關(guān)閉任意個(gè)activity章钾,如果有必要,你仍然可以在ActivityCollector中添加自己需要的方法热芹。

【END】之所以沒有在這篇中介紹activity啟動(dòng)模式的知識(shí)點(diǎn)贱傀,是因?yàn)槲恼绿嗔耍v解細(xì)致的比比皆是伊脓,下面幾個(gè)博文各有特色府寒,可以參考(注意文章和評(píng)論結(jié)合看):

Android開發(fā)藝術(shù)探索這本書中也有對(duì)啟動(dòng)模式的詳盡介紹,第一篇應(yīng)該也是以書中為主體的一篇博文报腔。
每篇博文代表了各位作者的闡述思路株搔,側(cè)重也各有不同,以及試圖闡述知識(shí)過程中采用的方法纯蛾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纤房,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翻诉,更是在濱河造成了極大的恐慌炮姨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碰煌,死亡現(xiàn)場離奇詭異舒岸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拄查,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門吁津,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堕扶,你說我怎么就攤上這事碍脏。” “怎么了稍算?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵典尾,是天一觀的道長。 經(jīng)常有香客問我糊探,道長钾埂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任科平,我火速辦了婚禮褥紫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞪慧。我一直安慰自己髓考,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布弃酌。 她就那樣靜靜地躺著氨菇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妓湘。 梳的紋絲不亂的頭發(fā)上查蓉,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音榜贴,去河邊找鬼豌研。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唬党,可吹牛的內(nèi)容都是我干的鹃共。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼初嘹,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼及汉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屯烦,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤坷随,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后驻龟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體温眉,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年翁狐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了类溢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闯冷,靈堂內(nèi)的尸體忽然破棺而出砂心,到底是詐尸還是另有隱情,我是刑警寧澤蛇耀,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布辩诞,位于F島的核電站,受9級(jí)特大地震影響纺涤,放射性物質(zhì)發(fā)生泄漏译暂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一撩炊、第九天 我趴在偏房一處隱蔽的房頂上張望外永。 院中可真熱鬧,春花似錦拧咳、人聲如沸伯顶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砾淌。三九已至,卻和暖如春谭网,著一層夾襖步出監(jiān)牢的瞬間汪厨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工愉择, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劫乱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓锥涕,卻偏偏與公主長得像衷戈,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子层坠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容