本文是針對(duì)同學(xué)們提問(wèn)的回答綜述
首先當(dāng)然還是熟悉的前言,在熟悉的位置
//********************************
其實(shí)是我做了個(gè)開(kāi)源項(xiàng)目(^__^)豺旬,拿出來(lái)給大家鑒賞下钠惩,歡迎大家提意見(jiàn)
項(xiàng)目:https://github.com/xuyt11/androidBackFlow歡迎關(guān)注和 star 。
功能:一個(gè)控制 Android 視圖( activity 與 fragment )回退的工具哈垢。
tip :這是一個(gè)回退工具妻柒,不是跳轉(zhuǎn)工具
//********************************
更詳細(xì)的介紹可以點(diǎn)擊:
如何優(yōu)雅的退出 App ?這樣優(yōu)雅的退出 App !:?http://www.reibang.com/p/75b145b9b222
一行代碼耘分,完成多層視圖回退功能( android):?http://www.reibang.com/p/8fb52395c259
一行代碼举塔,完成多層視圖回退功能( android): https://www.v2ex.com/t/333969
https://github.com/xuyt11/androidBackFlow/blob/master/README.md
//********************************
1绑警、設(shè)置 rootActivity 為 singleTask的方式,來(lái)退出程序
? ? A: 設(shè)置 rootActivity 為 singleTask 有這樣一個(gè)問(wèn)題:即在用戶(hù)按下 home 鍵退出當(dāng)前的 task 后央渣,當(dāng)再進(jìn)入 task 時(shí)计盒,在其上的所有 activity 都將被摧毀。所以芽丹,你只剩下一個(gè) rootActivity 了北启。像手機(jī)中的電話 App 就是這個(gè)需求的,除非你的業(yè)務(wù)需求可以這樣拔第。
? ? B: 但是咕村,在rootActivity之前,添加一個(gè)歡迎頁(yè)作為程序入口蚊俺,由歡迎頁(yè)跳轉(zhuǎn)到rootActivity懈涛,然后銷(xiāo)毀歡迎頁(yè),這樣就解決了問(wèn)題泳猬。
? ? C: 這其中的區(qū)別只是該task是否為singleTask launchMode Activity創(chuàng)建的批钠。所以,我猜測(cè)task與第一個(gè)Activity有關(guān)聯(lián)得封。(具體原理不太清楚埋心,希望高手指點(diǎn)!)忙上。
還有就是拷呆,我這個(gè)不只是一個(gè)退出App的工具,可以看下面的第3條
2 晨横、關(guān)于直接殺進(jìn)程
可以看看這篇文章:http://blog.csdn.net/u011277123/article/details/53579269
《 Android 疑難雜癥之 KillProcess 和 System.exit 無(wú)效》講的很詳細(xì)洋腮,非常值得閱讀一番,我就不獻(xiàn)丑了手形。
3啥供、直接退出程序
就是我也發(fā)過(guò)《如何優(yōu)雅的退出 App ?這樣優(yōu)雅的退出 App!》這篇文章库糠,所有可能造成了些誤會(huì)伙狐。我一直在文章前面就強(qiáng)調(diào)過(guò)的:這是一個(gè)回退工具,不是跳轉(zhuǎn)工具瞬欧,所以當(dāng)然也不只是一個(gè)退出App的工具贷屎。
我這個(gè)開(kāi)源項(xiàng)目,其實(shí)是一個(gè) Android 的視圖回退工具艘虎,“退出程序”只是其中的一個(gè)功能類(lèi)型(BackFlowType.finish_task)唉侄,他還有其他 4 個(gè)功能類(lèi)型。
? ? ? ? ? back_to_activity: 返回到指定的activity(回退到指定的activity)野建,若有多個(gè)activity實(shí)例属划,則只會(huì)回退到第一個(gè)匹配恬叹;
? ? ? ? ? back_to_fragments: 返回到指定的fragment列(回退到第一個(gè)匹配該fragment順序列的activity)
? ? ? ? ? back_to_activity_fragments: 返回到activity和fragment列都一致的activity(回退到包含了該fragment順序列的activity)
? ? ? ? ? back_activity_count: 回退數(shù)量為backActivityCount個(gè)的Activity,適用于固定順序的業(yè)務(wù)流程中同眯,每個(gè)activity界面都能有固定的position绽昼,兩個(gè)activity position的差值,即為backActivityCount
4须蜗、關(guān)于傾入性
有多個(gè)同學(xué)都提到了硅确,但我想,主要還是一個(gè)關(guān)于解決回退功能復(fù)雜度的問(wèn)題明肮。
若是在你的項(xiàng)目中有大量的多頁(yè)面回退需求菱农,我覺(jué)得這還是一個(gè)很好地解決方案的。
所以需要權(quán)衡兩者的利弊晤愧。
5大莫、關(guān)于項(xiàng)目本身
這個(gè)是我自己開(kāi)源的項(xiàng)目,所以若有任何 bug 官份,可以在 github 上提出來(lái),我雖然不能保證是第一時(shí)間烙丛,但絕對(duì)是會(huì)在最短的時(shí)間中解決的舅巷。我是會(huì)持續(xù)的對(duì)這個(gè)項(xiàng)目進(jìn)行支持的。
所以我也希望用戶(hù)若有使用的河咽,請(qǐng)?jiān)谟龅?bug 時(shí)钠右,也能在 github 上提出,能有解決方案就更好了忘蟹。也希望大家多多支持飒房。