Android:什么是更好的 - 多个活动或手动切换视图?

Dan*_*ail 115 android

我已经为Android开发了一些应用程序,这个问题总是存在:

我应该如何构建我的UI?我应该在活动后启动活动并离开手机来制作"后退"按钮,还是应该选择更优化但实施更复杂的方式,手动切换视图然后手动执行"后退"按钮功能?

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

Dan*_*Lew 98

我会说多个活动几乎总是更有意义.我不认为Android是专为不断切换自己的视图而设计的 - 你错过了这么多.你必须自己实现Back,你没有得到任何inter-Activity转换,你必须实现许多内部逻辑来恢复正确状态的应用程序.如果不将应用程序划分为"活动",则以后更改应用程序的流程会变得更加困难.它还导致一个mega-Activity比很多较小的代码要难得多.

我无法想象速度确实是一个问题; 如果它是,那么你初始化每个Activity的方式有问题.例如,我曾经尝试在Activities之间传递Serializable对象,这被证明是非常慢的; 当我切换到更快的传递对象的方法时,启动活动的速度极大地增加.

此外,我认为它告诉Android的活动和任务设计指南根本没有提到切换视图; 它以Activity-as-View设计为中心.

  • 简而言之,我最近看到了一些很棒的应用程序(例如Pulse),它们在一个Activity中使用动画和不同视图之间的平滑传输. (5认同)
  • 我同意你的意见,但许多视觉效果只能在视图转换之间使用,而不能在驱动ergo和良好编码之间出现问题的活动之间获得 (3认同)
  • @Daniel:当我切换到更快的传递对象的方法时,启动活动的速度大大增加.能否请您提供一些额外的细节或参考资料? (3认同)

sat*_*ine 21

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

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

  • 如果你想在屏幕之间有一些非常酷的动画.也许你想要一只鸟在一个屏幕上起飞并降落在另一个屏幕上.当每个屏幕都是活动时尝试这样做!

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

更新2014年3月:

此时,问题现在应该包括片段的选择.我认为视图可能是3:Activity,Fragment,View中最不可能的选择.如果你想实现使用后退按钮的屏幕,那么它应该是Activties或Fragments,因为它们本身都处理后退按钮.需要将片段添加到FragmentManager后台堆栈以使后退按钮起作用.管理片段,对话框和后台堆栈虽然有点烦人!

更新于2018年9月:

Google的一些开发人员正在推荐使用新导航架构组件的单一活动应用.


Eri*_*ass 11

另请注意,使用多个应用程序实现您的应用程序Activities将为用户提供整体平台更一致的体验.部分体验将通过使用内置的Google应用程序来塑造,因此如果用户的行为与手机上已安装的应用程序类似,则用户可能会更轻松地使用您的应用程序.