本文是針對同學(xué)們提問的回答綜述
首先當然還是熟悉的前言,在熟悉的位置
//********************************
其實是我做了個開源項目(^__^),拿出來給大家鑒賞下,歡迎大家提意見
項目:https://github.com/xuyt11/androidBackFlow歡迎關(guān)注和 star 。
功能:一個控制 Android 視圖( activity 與 fragment )回退的工具。
tip :這是一個回退工具,不是跳轉(zhuǎn)工具
//********************************
更詳細的介紹可以點擊:
如何優(yōu)雅的退出 App ?這樣優(yōu)雅的退出 App !:?http://www.itdecent.cn/p/75b145b9b222
一行代碼,完成多層視圖回退功能( android):?http://www.itdecent.cn/p/8fb52395c259
一行代碼,完成多層視圖回退功能( android): https://www.v2ex.com/t/333969
https://github.com/xuyt11/androidBackFlow/blob/master/README.md
//********************************
1、設(shè)置 rootActivity 為 singleTask的方式,來退出程序
? ? A: 設(shè)置 rootActivity 為 singleTask 有這樣一個問題:即在用戶按下 home 鍵退出當前的 task 后,當再進入 task 時,在其上的所有 activity 都將被摧毀。所以,你只剩下一個 rootActivity 了。像手機中的電話 App 就是這個需求的,除非你的業(yè)務(wù)需求可以這樣。
? ? B: 但是,在rootActivity之前,添加一個歡迎頁作為程序入口,由歡迎頁跳轉(zhuǎn)到rootActivity,然后銷毀歡迎頁,這樣就解決了問題。
? ? C: 這其中的區(qū)別只是該task是否為singleTask launchMode Activity創(chuàng)建的。所以,我猜測task與第一個Activity有關(guān)聯(lián)。(具體原理不太清楚,希望高手指點!)。
還有就是,我這個不只是一個退出App的工具,可以看下面的第3條
2 、關(guān)于直接殺進程
可以看看這篇文章:http://blog.csdn.net/u011277123/article/details/53579269
《 Android 疑難雜癥之 KillProcess 和 System.exit 無效》講的很詳細,非常值得閱讀一番,我就不獻丑了。
3、直接退出程序
就是我也發(fā)過《如何優(yōu)雅的退出 App ?這樣優(yōu)雅的退出 App!》這篇文章,所有可能造成了些誤會。我一直在文章前面就強調(diào)過的:這是一個回退工具,不是跳轉(zhuǎn)工具,所以當然也不只是一個退出App的工具。
我這個開源項目,其實是一個 Android 的視圖回退工具,“退出程序”只是其中的一個功能類型(BackFlowType.finish_task),他還有其他 4 個功能類型。
? ? ? ? ? back_to_activity: 返回到指定的activity(回退到指定的activity),若有多個activity實例,則只會回退到第一個匹配;
? ? ? ? ? back_to_fragments: 返回到指定的fragment列(回退到第一個匹配該fragment順序列的activity)
? ? ? ? ? back_to_activity_fragments: 返回到activity和fragment列都一致的activity(回退到包含了該fragment順序列的activity)
? ? ? ? ? back_activity_count: 回退數(shù)量為backActivityCount個的Activity,適用于固定順序的業(yè)務(wù)流程中,每個activity界面都能有固定的position,兩個activity position的差值,即為backActivityCount
4、關(guān)于傾入性
有多個同學(xué)都提到了,但我想,主要還是一個關(guān)于解決回退功能復(fù)雜度的問題。
若是在你的項目中有大量的多頁面回退需求,我覺得這還是一個很好地解決方案的。
所以需要權(quán)衡兩者的利弊。
5、關(guān)于項目本身
這個是我自己開源的項目,所以若有任何 bug ,可以在 github 上提出來,我雖然不能保證是第一時間,但絕對是會在最短的時間中解決的。我是會持續(xù)的對這個項目進行支持的。
所以我也希望用戶若有使用的,請在遇到 bug 時,也能在 github 上提出,能有解決方案就更好了。也希望大家多多支持。