如何保存活动的完整实例,从而防止每次启动时重新加载?
How to save full instances of Activities and hence prevent reloading for each start?
我的 Android 应用程序实质上是将网站转换为移动应用程序。设计如下:
导航抽屉,根据网站包含不同类别的帖子。
每个选项都是不同的activity。我设计了一个 BaseActivity(带有 Navigation Drawer 初始化),其他活动从中扩展,因此每个 activity 都有 Navigation Drawer。 (我不使用片段)
每个 activity 调用一个 JSON 解析器从网站加载帖子,因此加载最多需要 5 秒。
问题是 activities/screens 一旦打开,下次调用时不会留在内存中。
例如:主屏幕 --> 类别 1 屏幕 --> 主屏幕导致主屏幕加载第二次,因此额外占用 5 秒。
如何在内存中保留至少 3 个活动的完整(或至少部分)实例以避免这种麻烦?
我确实调用了 super.onCreate(savedInstanceState),但每个 activity 从头开始重新启动。
For example: Home Screen --> Category 1 Screen --> Home Screen causes the Home Screen to load a second time and hence takes up an additional 5 seconds.
返回 "Home Screen" activity 时,将适当的标志添加到您的 Intent
,例如 FLAG_ACTIVITY_CLEAR__TOP
。除其他事项外,这会将现有 "Home Screen" 实例带回前台,而不是创建新实例。
How can I keep the full (or at least partial) instance of at least 3 activities in memory to avoid this nuisance?
你的问题不在于它们是否在内存中。如果用户之前访问过它们,则它们已经在内存中。但是,如果没有 Intent
上的标志或清单中的属性来帮助控制问题,每个 startActivity()
调用都会创建 activity.
的新实例
因此,首先,您需要确定应用的导航流程,尤其是在“返回”按钮方面,以确定哪些现有 activity 实例可以重复使用。
其次,您需要更有效的缓存策略,而不是仅仅将内容存储在单个活动中。这样,即使您最终创建了新的 activity 实例(以保持 BACK 按钮按您想要的方式流动),这些活动也可以从缓存中检索数据,而不必从 Web 重新加载数据网站。
我的 Android 应用程序实质上是将网站转换为移动应用程序。设计如下:
导航抽屉,根据网站包含不同类别的帖子。
每个选项都是不同的activity。我设计了一个 BaseActivity(带有 Navigation Drawer 初始化),其他活动从中扩展,因此每个 activity 都有 Navigation Drawer。 (我不使用片段)
每个 activity 调用一个 JSON 解析器从网站加载帖子,因此加载最多需要 5 秒。
问题是 activities/screens 一旦打开,下次调用时不会留在内存中。
例如:主屏幕 --> 类别 1 屏幕 --> 主屏幕导致主屏幕加载第二次,因此额外占用 5 秒。
如何在内存中保留至少 3 个活动的完整(或至少部分)实例以避免这种麻烦?
我确实调用了 super.onCreate(savedInstanceState),但每个 activity 从头开始重新启动。
For example: Home Screen --> Category 1 Screen --> Home Screen causes the Home Screen to load a second time and hence takes up an additional 5 seconds.
返回 "Home Screen" activity 时,将适当的标志添加到您的 Intent
,例如 FLAG_ACTIVITY_CLEAR__TOP
。除其他事项外,这会将现有 "Home Screen" 实例带回前台,而不是创建新实例。
How can I keep the full (or at least partial) instance of at least 3 activities in memory to avoid this nuisance?
你的问题不在于它们是否在内存中。如果用户之前访问过它们,则它们已经在内存中。但是,如果没有 Intent
上的标志或清单中的属性来帮助控制问题,每个 startActivity()
调用都会创建 activity.
因此,首先,您需要确定应用的导航流程,尤其是在“返回”按钮方面,以确定哪些现有 activity 实例可以重复使用。
其次,您需要更有效的缓存策略,而不是仅仅将内容存储在单个活动中。这样,即使您最终创建了新的 activity 实例(以保持 BACK 按钮按您想要的方式流动),这些活动也可以从缓存中检索数据,而不必从 Web 重新加载数据网站。