如何优雅的退出 App ?这样优雅的退出 App !

2,571 阅读1分钟
原文链接: www.jianshu.com

只需要下面这行代码(肯定还有其他的代码),当然,这是有限制的(。﹏。),而且只是退出当前的 task 而已!

BackFlow.finishTask(activity | fragment)

其实是我做了个开源项目(^__^),拿出来给大家鉴赏下,欢迎大家提意见

项目:github.com/xuyt11/andr… 欢迎关注和 star 。

功能:一个控制 Android 视图( activity 与 fragment )回退的工具。

tip :这是一个回退工具,不是跳转工具

解决思路

利用 startActivityForResult 、onActivityResult 、setResult与finish(activity)来进行实现。

如果我们每一次都是调用的 startActivityForResult 方法,那我们不就可以使用setResult与finish(activity),并在前一个视图的onActivityResult方法中对finish_task类型的setResults进行拦截,然后再setResult与finish(activity),这样就可以进行链式的视图回退,直到最后一个activity,这样当所有的activity都finish之后,整个App就退出了!

限制

当然,这也是有限制条件的,若在回退链中间有任何一个XXXActivity消耗过onActivityResult方法,则会停留在该XXXActivity,不能继续回退。

因为整个回退功能都是依赖于setResult方法将回退数据,链式的传递给前一个activity的onActivityResult方法,而在activity消耗了onActivityResult方法之后,是不会再调用该方法的。

现在发现的消耗onActivityResult方法的情况有:

1、切换task;

2、切换process;

3、在startActivity时,调用了intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

所以,只能在single task && single process的环境中使用。

更详细的介绍请到以下网页:欢迎关注、收藏、点赞和star

www.v2ex.com/t/333969

github.com/xuyt11/andr…