1
100
我想说,多种活动几乎总是更有意义的。我只是不认为安卓系统是为不断转换自己的观点而设计的——你错过了太多。你必须自己实现,你不能得到任何活动间的转换,你必须实现大量的内部逻辑才能使应用程序恢复到正确的状态。如果您不将应用程序划分为活动,那么以后更改应用程序的流程会变得非常困难。它还导致了一个大型活动,它比许多较小的代码片段更难处理。 我很难想象速度真的是个问题;如果是,那么初始化每个活动的方式就有问题。例如,我曾经尝试在活动之间传递可序列化对象,结果证明速度非常慢;当我转向一种更快的通过物体的方法时,发射活动的速度大大提高了。 而且,我认为这说明了这一点 the Android guidelines for Activity and Task Design 根本不要提及交换观点;它以活动为中心,如视图设计。 |
2
21
另一方面,如果您的一个屏幕被设计为由任何数量的其他应用程序显示,那么该屏幕应该是它自己的活动。 2014年3月更新:
2018年9月更新: 谷歌的一些开发人员正在推荐 single activity apps using the new navigation architecture component |
3
11
还请记住,使用多个
|
4
4
与其他人不同,我使用两者的混合物,例如,
|
5
3
这一切都取决于应用程序,您试图实现更好的性能、更流畅的UI。IMHO我更喜欢第二种手动控制活动的方法,即使它像您所说的那样更复杂。这是我在android tabs项目中使用的一种方法,您可能还想看看名为ActivityGroup的类(不确定包),它允许您在多个活动之间切换,这个类的优点是,切换时不会卸载活动,但缺点是加载主应用程序需要更长的时间。
|
6
1
我偶然发现切换视图的问题也是由垃圾收集器引起的。似乎GC是在您离开活动而不是视图时触发的。因此,更改具有相当复杂子视图的选项卡几乎不可避免地会导致堆栈溢出异常。。 |
7
0
我经历过很多关于多活动布局的问题,所以我强烈反对它,除非有充分的理由选择它。 多种活动的缺点 使用多个活动很难重构代码以从活动返回数据。
另一种情况是,当您打开子活动时,VM可能自该子活动首次生成以来就已被杀死,例如当应用程序在显示子活动时最小化。 只在一个地方存储相关的应用程序状态会更干净,在我的情况下,大多数情况下,如果VM被杀死,我想让用户返回主屏幕,让他们重新开始工作,因为我不会花30-50小时编写0.1%的用户将体验到的保存/恢复功能。
片段,或者自己管理活动视图。手动管理视图,需要编码一些视图切换选项,以替代活动/片段,并根据需要进行转换。 不,它并不意味着一个巨大的活动,正如公认的答案所建议的那样,除了它的一个巨大的应用程序之外,其他任何方式。它只需要对代码库进行更多的设计,使其成为合适的部分,因为有更多的工作管理视图,尽管管理活动状态和其他奇怪之处要少得多。 可能相关: Reddit: It's official : Google officially recommends single activity app architecture |
Abhilash Das · 输入文本时,编辑文本与工具栏重叠 1 年前 |
Community wiki · 局部变量可能尚未初始化 1 年前 |
jvargas · 如何获取上个月的第一天和最后一天以及一年的第一天 1 年前 |