应用程序中的最大活动数量是多少?安卓

5
有没有类似于 Android 应用程序的最大活动数? 我想知道这个问题,因为我正在考虑创建具有铃声功能的音频应用程序。它将大约有40个活动。但只有一个活动会不断运行。 这太多了吗?我应该找另一种方法吗?
为什么我需要40个活动的解释 我有30个铃声,并希望将它们设置为铃声。 1个普通活动,带有播放MP和其他东西的按钮,以及35个其他活动,每个文件一个。 我想要的是在长按时启动带有布局的活动,并且将有更多按钮。 我尝试使用上下文菜单,但看起来不好。

3
活动并不总是一直停留在内存中,因此数量不是问题.. 但是为什么铃声功能需要40个活动?为什么不只使用一个活动,并在需要更新文件时更改更新呢? - Marco Acierno
我该怎么做呢?因为首先我需要复制文件并设置文件名,然后将其设置为铃声。 - user3231871
只需一个活动并使用extras传递文件名/路径等。 - Marco Acierno
我明白了,谢谢。我会寻找一种方法来实现。 - user3231871
2个回答

2

您可以拥有任意数量的活动。数量没有限制。所有Android活动都存储在堆栈中,位于堆栈顶部的活动是可见的。当内存不足时,Android操作系统会自动开始终止那些位于堆栈较低且没有运行任何后台任务或服务的活动。


很可能存在一些限制 - 例如单个dex文件中方法的最大数量限制。但是这个限制是相当大的。 - Chris Stratton
据我所知,谷歌没有关于这方面的文档记录。我认为影响因素将取决于手机的类型。当然,不能无限打开活动 - 我只是想说Android中没有设计类似截止数量的东西。 - ucsunil
不同意。显然,不同活动的数量必须比文件中最大不同方法的数量小几倍,这是一个已知的限制。对于这个问题,有多少是“打开”的并不重要——这是dex文件中唯一构造的实际限制,无论它们是否被执行。唯一的问题是你是否可以将你的活动分布在多个dex文件中——显然使用多个dex文件相当棘手,所以我怀疑是否可以这样做。 - Chris Stratton
不是这样的,Android不会开始“杀死那些在堆栈下面的应用程序”。它将会杀死后台进程中的活动,但如果您的应用程序在前台,则不会这样做。https://commonsware.com/blog/2011/10/03/activities-not-destroyed-to-free-heap-space.html - Ian Ellis

2
你不应该因为活动数量的增加而遇到问题,但我对你的设计提出了质疑。这很可能会难以正确实现,并且会出现性能问题,APK 文件可能会非常过大。
另一种替代方法可以利用以下事实:您可以选择性地使用/显示单个活动的不同布局,单个布局可以在同一可见空间中选择性地显示不同的组件。

如果大多数活动都是主活动类的薄扩展,那么大小可能不会太糟糕。但我同意改变内容更优秀;例如,每个程序“级别”应该有一个活动,并为每个文件切换“文件级别”活动的内容。 - Chris Stratton
大小和性能并不是真正的问题。至少在硬件更好的设备上不是,没有机会测试那些规格较差的设备。至于仅切换布局,一个活动中是否有最大行数的代码?例如,在某些行数之后,应用程序开始运行变慢和卡顿吗? - user3231871
1
你的应用程序可以在不错的硬件上运行......但如果有人在较差的硬件上安装它怎么办?你的应用程序可能无法正常工作/变得缓慢。你应该考虑到每一种手机。 - Marco Acierno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接