本文是针对同学们提问的回答综述
首先当然还是熟悉的前言,在熟悉的位置
//********************************
其实是我做了个开源项目(^__^),拿出来给大家鉴赏下,欢迎大家提意见
项目:https://github.com/xuyt11/androidBackFlow欢迎关注和 star 。
功能:一个控制 Android 视图( activity 与 fragment )回退的工具。
tip :这是一个回退工具,不是跳转工具
//********************************
更详细的介绍可以点击:
如何优雅的退出 App ?这样优雅的退出 App !: http://www.jianshu.com/p/75b145b9b222
一行代码,完成多层视图回退功能( android): http://www.jianshu.com/p/8fb52395c259
一行代码,完成多层视图回退功能( android): https://www.v2ex.com/t/333969
https://github.com/xuyt11/androidBackFlow/blob/master/README.md
//********************************
1、设置 rootActivity 为 singleTask的方式,来退出程序
A: 设置 rootActivity 为 singleTask 有这样一个问题:即在用户按下 home 键退出当前的 task 后,当再进入 task 时,在其上的所有 activity 都将被摧毁。所以,你只剩下一个 rootActivity 了。像手机中的电话 App 就是这个需求的,除非你的业务需求可以这样。
B: 但是,在rootActivity之前,添加一个欢迎页作为程序入口,由欢迎页跳转到rootActivity,然后销毁欢迎页,这样就解决了问题。
C: 这其中的区别只是该task是否为singleTask launchMode Activity创建的。所以,我猜测task与第一个Activity有关联。(具体原理不太清楚,希望高手指点!)。
还有就是,我这个不只是一个退出App的工具,可以看下面的第3条
2 、关于直接杀进程
可以看看这篇文章:http://blog.csdn.net/u011277123/article/details/53579269
《 Android 疑难杂症之 KillProcess 和 System.exit 无效》讲的很详细,非常值得阅读一番,我就不献丑了。
3、直接退出程序
就是我也发过《如何优雅的退出 App ?这样优雅的退出 App!》这篇文章,所有可能造成了些误会。我一直在文章前面就强调过的:这是一个回退工具,不是跳转工具,所以当然也不只是一个退出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: 回退数量为backActivityCount个的Activity,适用于固定顺序的业务流程中,每个activity界面都能有固定的position,两个activity position的差值,即为backActivityCount
4、关于倾入性
有多个同学都提到了,但我想,主要还是一个关于解决回退功能复杂度的问题。
若是在你的项目中有大量的多页面回退需求,我觉得这还是一个很好地解决方案的。
所以需要权衡两者的利弊。
5、关于项目本身
这个是我自己开源的项目,所以若有任何 bug ,可以在 github 上提出来,我虽然不能保证是第一时间,但绝对是会在最短的时间中解决的。我是会持续的对这个项目进行支持的。
所以我也希望用户若有使用的,请在遇到 bug 时,也能在 github 上提出,能有解决方案就更好了。也希望大家多多支持。