三個Activity循環(huán)點(diǎn)擊呕屎,返回只保留一個本身

業(yè)務(wù)要求:FM播放頁、主播主頁敬察、欄目詳情頁可以依托播放頁循環(huán)點(diǎn)擊(如:播放頁——主播主頁——播放頁——欄目詳情頁)秀睛。但返回這三個頁面都只保留一個,再回到主頁静汤。

采坑日常:
1琅催、啟動模式:
A居凶、singleTask: 一開始腦子第一反應(yīng)就是用啟動模式來實(shí)現(xiàn),先想到singleTask藤抡。但是他會移除他之上的所有棧侠碧。ActivityA→ActivityB→ActicityC→ActivityA(三個都是singleTask模式),系統(tǒng)會先從內(nèi)部開始把ActivityA與ActicityC之間的Acticity全部結(jié)束onDestroy缠黍。然后暫停ActicityC,調(diào)用ActivityA的onNewIntent->onRestart->onStart->onResume然后再停止并結(jié)束ActicityC弄兜。所以多次循環(huán)后,就不會三個界面都有一個讓你去返回了瓷式。就不符合我們的業(yè)務(wù)要求了替饿。
B、singleInstance: 后來想想用singleInstance贸典,他是單一實(shí)例视卢,具備所有singleTask的特點(diǎn),唯一不同的是廊驼,它是存在于另一個任務(wù)棧中据过。然后ActivityA->ActivityB->ActivityC→ActivityA(三個都是singleInstance模式),發(fā)現(xiàn)返回都正常妒挎,以為弄好了绳锅。然后Home鍵,應(yīng)用退到后臺酝掩,再次打開的時候發(fā)現(xiàn)鳞芙,居然回到了主頁。這是因?yàn)楫?dāng)重新啟動的時候期虾,系統(tǒng)會先去找主棧(我是這么叫的)里的activity原朝,也就是APP中LAUNCHER的activity所處在的棧。查看是否有存在的activity镶苞。沒有的話則會重新啟動LAUNCHER竿拆。這就很不符合我們的業(yè)務(wù)需要了。有解決辦法嗎宾尚?其實(shí)不是沒有,但是我想到解決辦法實(shí)在是自己都不愿意用谢澈。所以果斷放棄了煌贴。

2、既然正常的系統(tǒng)的模式無法滿足我的需要锥忿,我就在想牛郑,該怎么辦呢?后來想了下敬鬓,干脆自己來維護(hù)好了淹朋,反正就三個頁面笙各。所以就自己寫了個棧。

public class FMActivityStack {

private static Stack<Activity> stack;

private FMActivityStack() {
    stack = new Stack<>();
}

// 當(dāng)前Activity推入棧中
public static void pushActivity(Activity activity) {
    if (stack == null) {
        stack = new Stack<>();
    }
    if (activity != null) {
        finishTheOthers(activity);
        stack.add(activity);
    }
}

/**
 * 移除之前存在的activity
 *
 * @param activity
 */
public static void finishTheOthers(Activity activity) {
    if (stack == null) return;
    for (Iterator<Activity> it = stack.iterator(); it.hasNext(); ) {
        Activity sa = it.next();
        if (sa.getLocalClassName().equals(activity.getLocalClassName())) {
            sa.finish();
            it.remove();
        }
    }
}

}
一開始沒有用Iterator础芍,還報(bào)了一個錯誤ConcurrentModificationException(同時修改的意思)杈抢。這樣就實(shí)現(xiàn)了我想要的效果了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仑性,一起剝皮案震驚了整個濱河市惶楼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诊杆,老刑警劉巖歼捐,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晨汹,居然都是意外死亡豹储,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門淘这,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剥扣,“玉大人,你說我怎么就攤上這事慨灭‰Γ” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵氧骤,是天一觀的道長呻疹。 經(jīng)常有香客問我,道長筹陵,這世上最難降的妖魔是什么刽锤? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮朦佩,結(jié)果婚禮上并思,老公的妹妹穿的比我還像新娘。我一直安慰自己语稠,他們只是感情好宋彼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仙畦,像睡著了一般输涕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慨畸,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天莱坎,我揣著相機(jī)與錄音,去河邊找鬼寸士。 笑死檐什,一個胖子當(dāng)著我的面吹牛碴卧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乃正,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼住册,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烫葬?” 一聲冷哼從身側(cè)響起界弧,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搭综,沒想到半個月后垢箕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兑巾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年条获,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒋歌。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帅掘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堂油,到底是詐尸還是另有隱情修档,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布府框,位于F島的核電站吱窝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏迫靖。R本人自食惡果不足惜院峡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望系宜。 院中可真熱鬧照激,春花似錦、人聲如沸盹牧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汰寓。三九已至吆寨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踩寇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工六水, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俺孙,地道東北人辣卒。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像睛榄,于是被迫代替她去往敵國和親荣茫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354