Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在类中移动而不创建新实例_Android_Memory Management_Memory Leaks_Class Design - Fatal编程技术网

Android 在类中移动而不创建新实例

Android 在类中移动而不创建新实例,android,memory-management,memory-leaks,class-design,Android,Memory Management,Memory Leaks,Class Design,有人知道不创建新实例而显示另一个类的方法吗? 从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂 提前谢谢 我猜从已经说过的话-没有真正的方法来做到这一点,不会阻碍操作系统的“返回”功能? 我正在构建一个应用程序,它是线性的,除了在每个屏幕上都有一个home按钮,这样就可以取消这个功能,并以循环结束-你知道有什么方法可以破坏所有视图并重置回主类吗?(即防止内存泄漏成为问题,但也不会破坏操作系统功能

有人知道不创建新实例而显示另一个类的方法吗? 从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂

提前谢谢


我猜从已经说过的话-没有真正的方法来做到这一点,不会阻碍操作系统的“返回”功能? 我正在构建一个应用程序,它是线性的,除了在每个屏幕上都有一个home按钮,这样就可以取消这个功能,并以循环结束-你知道有什么方法可以破坏所有视图并重置回主类吗?(即防止内存泄漏成为问题,但也不会破坏操作系统功能)


如果不重新启动应用程序,就可以将其视为“清除历史记录”

不确定这是否适用于Android(来自MS/C背景),但从概念上讲,一个选项是在打开的表单中迭代,寻找具有特定句柄的表单。然后,一旦找到它,只需调用该方法即可显示该表单。这取决于是否存在与.NET中的Application.OpenForms属性相当的Java

从内存管理的角度来看,每次要显示不同的表单/页面时,都需要使用StartActivity,然后创建类的新实例,而不是重用以前创建的实例,这似乎有点疯狂

战术上,只要您从导航的角度理解其后果,欢迎您将
标记\u重新排序\u添加到\u FRONT
,将现有活动带回到前台

然而,你的问题很奇怪。您如何访问StackOverflow

显然,这不是通过网络浏览器实现的。Web浏览器使用您认为“疯狂”的确切机制,呈现网页,即使该网页以前曾被查看过。他们这样做已经超过15年了,我们一直做得很好

Android导航模型的设计与Web的设计大致相同:

  • 用户点击事物向前移动
  • 用户单击“上一步”按钮,转到他们正在查看的上一个内容
  • 当用户想要切换到其他主要的东西去看时,点击主页按钮
通过“重用先前创建的实例”,您绕过了导航模型。例如,假设您的活动堆栈是A-B-C-D,您使用
意图
为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功能)考虑它是一个“清晰的历史”而不重新启动应用程序