Android 在类中移动而不创建新实例
有人知道不创建新实例而显示另一个类的方法吗? 从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂 提前谢谢Android 在类中移动而不创建新实例,android,memory-management,memory-leaks,class-design,Android,Memory Management,Memory Leaks,Class Design,有人知道不创建新实例而显示另一个类的方法吗? 从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂 提前谢谢 我猜从已经说过的话-没有真正的方法来做到这一点,不会阻碍操作系统的“返回”功能? 我正在构建一个应用程序,它是线性的,除了在每个屏幕上都有一个home按钮,这样就可以取消这个功能,并以循环结束-你知道有什么方法可以破坏所有视图并重置回主类吗?(即防止内存泄漏成为问题,但也不会破坏操作系统功能
我猜从已经说过的话-没有真正的方法来做到这一点,不会阻碍操作系统的“返回”功能? 我正在构建一个应用程序,它是线性的,除了在每个屏幕上都有一个home按钮,这样就可以取消这个功能,并以循环结束-你知道有什么方法可以破坏所有视图并重置回主类吗?(即防止内存泄漏成为问题,但也不会破坏操作系统功能)
如果不重新启动应用程序,就可以将其视为“清除历史记录”不确定这是否适用于Android(来自MS/C背景),但从概念上讲,一个选项是在打开的表单中迭代,寻找具有特定句柄的表单。然后,一旦找到它,只需调用该方法即可显示该表单。这取决于是否存在与.NET中的Application.OpenForms属性相当的Java 从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂 战术上,只要您从导航的角度理解其后果,欢迎您将
标记\u重新排序\u添加到\u FRONT
,将现有活动带回到前台
然而,你的问题很奇怪。您如何访问StackOverflow
显然,这不是通过网络浏览器实现的。Web浏览器使用您认为“疯狂”的确切机制,呈现网页,即使该网页以前曾被查看过。他们这样做已经超过15年了,我们一直做得很好
Android导航模型的设计与Web的设计大致相同:
- 用户点击事物向前移动
- 用户单击“上一步”按钮,转到他们正在查看的上一个内容
- 当用户想要切换到其他主要的东西去看时,点击主页按钮
意图为B调用startActivity()
,并将标记重新排序到前面。现在,活动堆栈是A-C-D-B。当用户按下“后退”按钮时,它们不再位于原来查看的B上,而是位于A。在浏览器中,这将是一种相当奇怪的行为
清单中的Intent
上还有其他标志,或者
上的属性提供了“重用先前创建的实例”。然而,“从内存管理的角度来看”,它们并不存在。传统的Web后台导航模式无法满足您的需要
假设你没有在任何地方搞砸,Android会破坏未充分利用的活动,垃圾收集内存,甚至将内存返回操作系统。按类,你指的是活动吗?是的,扩展活动类的类很奇怪-有人否决了这个问题?更改问题标题-这很模糊。(顺便说一句,我没有否决投票,但这可能是其他人否决投票的原因!)谢谢Sagar,有什么建议我可以让它更具体吗?没有类似的建议,对不起。谢谢你的回答awilson,不幸的是,Android的工作方式非常不同——甚至与它的基础Java相比——我意识到,一旦我进行了更多的研究(在我发表文章之后)。对不起,有任何误导,下次我会先做研究。:)谢谢你的解释,假设我有一个a-B-C-D型,在D上我有一个显示a的按钮,然后在内存中我们有a-B-C-D-a,然后我按照菜单系统从a开始,我可能会得到a-B-C-D-a-B-C-D-a-B-C-D等等,android似乎不会删除未充分利用的状态,否则我将无法单击“后退”按钮并返回到状态A-B-C-D,因此问题是-浏览器的类比略有不同,浏览器不会将网站存储在内存中,它会重新解析页面,但使用基于文件的缓存除外。我猜从前面所说的,没有真正的方法可以做到这一点,这不会妨碍操作系统的“返回”功能?我正在构建一个应用程序,它是线性的,除了在每个屏幕上都有一个home按钮,这样就可以取消这个功能,并以循环结束-你知道有什么方法可以破坏所有视图并重置回主类吗?(防止内存泄漏成为一个问题,但也不会破坏OS功能)考虑它是一个“清晰的历史”而不重新启动应用程序