V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuyt
V2EX  ›  Android

一行代码,完成多层视图回退功能( android)(续)

  •  
  •   xuyt · 2017-01-13 18:33:15 +08:00 · 8048 次点击
    这是一个创建于 2870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文是针对同学们提问的回答综述

    首先当然还是熟悉的前言,在熟悉的位置

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

    项目: 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 的方式,来退出程序

    • 设置 rootActivity 为 singleTask 有这样一个问题:即在用户按下 home 键退出当前的 task 后,当再进入 task 时,在其上的所有 activity 都将被摧毁。所以,你只剩下一个 rootActivity 了。像手机中的电话 App 就是这个需求的,除非你的业务需求可以这样。
    • 但是,在 rootActivity 之前,添加一个欢迎页作为程序入口,由欢迎页跳转到 rootActivity ,然后销毁欢迎页,这样就解决了问题。
    • 这其中的区别只是该 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 上提出,能有解决方案就更好了。也希望大家多多支持。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   926 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 21:14 · PVG 05:14 · LAX 13:14 · JFK 16:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.