多个活动或手动切换视图?

我为Android开发了一些应用程序,并且这些问题始终保持:

我应该如何构建我的UI? 我是否应该在活动之后启动活动并让手机成为“后退”按钮,还是应该选择更优化但更复杂的方式实现手动切换视图,然后手动执行“后退”按钮功能?

你认为(或知道)什么是更好的做法?


我会说,多个活动几乎总是更有意义。 我只是不认为Android是为了不断改变自己的观点而设计的 - 你错过了这么多。 你必须自己实现Back,你不会得到任何活动间转换,你必须实现许多内部逻辑来恢复处于正确状态的应用程序。 如果您不将应用程序划分为活动,那么稍后改变应用程序的流程会变得更加困难。 它还会导致一个大型活动,比许多较小的代码片段更难处理。

我很难想象速度确实是一个问题; 如果是,那么您初始化每个活动的方式会出现问题。 例如,我曾尝试在活动之间传递Serializable对象,事实证明这非常缓慢; 当我转向更快的方法传递对象时,启动活动的速度大大增加。

另外,我认为这是说Android的活动和任务设计指南根本没有提到切换视图; 它围绕着一个Activity-as-View设计。


我想指出一些实例,当单个活动可能更好地设计用于具有多个全屏幕的Android应用程序时查看:

  • 如果应用程序屏幕紧密耦合并共享它们都在运行的通用对象。 在这种情况下,传递Object可能需要一个Bundle,并且可能会有错误,因为它会有副本。 一个很好的例子可能是一个向导。 是的,你可以使用静态来访问公共对象,但静态在Android中可能是危险的(请考虑配置更改!)

  • 如果你想在屏幕之间制作一些非常酷的动画。 也许你想要一只鸟在一个屏幕上起飞,然后降落在另一个屏幕上。 尝试做到这一点,当每个屏幕是一个活动!

  • 另一方面,如果您的屏幕之一被设计为由任意数量的其他应用程序显示,那么该屏幕应该是它自己的活动。

    2014年3月更新:

    现在这个问题应该包括碎片的选择。 我认为Views可能是3:Activity,Fragment,View最不可能的选择。 如果你想实现使用后退按钮的屏幕,那么它应该是活动或片段,因为它们都是本地处理后退按钮。 片段将需要被添加到FragmentManager后退堆栈以便后退按钮工作。 尽管管理片段,对话框和后台堆栈可能有点烦恼!


    另外请记住,通过多个Activities来实现您的应用程序将为用户提供更加连贯的平台体验。 部分体验将通过使用内置Google应用程序进行调整,因此,如果用户的行为与手机上已安装的应用程序的行为类似,那么用户可能会更轻松地使用应用程序。

    链接地址: http://www.djcxy.com/p/68003.html

    上一篇: multiple activities or switching views manually?

    下一篇: Android Activities and Views