如何保存活动的完整实例,从而阻止每次启动重新加载?

时间:2015-07-05 14:40:17

标签: android android-activity navigation instance drawer

我的Android应用程序实质上将网站转换为移动应用程序。设计如下:

  • 导航抽屉,根据网站包含不同类别的帖子。

  • 每个选项都是不同的活动。我设计了一个BaseActivity(带有导航抽屉初始化),其他活动从中扩展,因此每个活动都有导航抽屉。 (我不使用片段)

  • 每个活动都会调用JSON解析器来加载网站上的帖子,因此最多需要5秒才能加载。

问题是,一旦打开活动/屏幕,再次打电话时不会留在内存中。

例如:主屏幕 - >第1类屏幕 - >主屏幕导致主屏幕第二次加载,因此需要额外的5秒钟。

如何在内存中保留至少3个活动的完整(或至少部分)实例以避免这种麻烦?

我确实调用了super.onCreate(savedInstanceState),但每个活动都从头开始重新启动。

1 个答案:

答案 0 :(得分:0)

  

例如:主屏幕 - >第1类屏幕 - >主屏幕导致主屏幕第二次加载,因此需要额外的5秒钟。

在返回“主屏幕”活动时,为Intent添加适当的标记,例如FLAG_ACTIVITY_CLEAR__TOP。除此之外,这将使现有的“主屏幕”实例回到前台,而不是创建一个新实例。

  

如何在内存中保留至少3个活动的完整(或至少部分)实例以避免这种麻烦?

你的问题不在于它们是否在记忆中。如果用户之前访问过它们,它们已经在内存中。但是,如果Intent上没有标记或清单中的属性有助于控制事项,则每个startActivity()调用都会创建一个新的活动实例。

因此,首先,您需要确定应用的导航流程,特别是在BACK按钮方面,以确定可以重复使用的现有活动实例。

其次,您需要一种更有效的缓存策略,而不仅仅是将内容存储在各个活动中。这样,即使你最终创建了新的活动实例(为了保持BACK按钮按照你想要的方式流动),这些活动也可以从缓存中检索数据,而不必从网站重新加载数据。