2

我的应用程序中有三个顶级活动。活动 A、B 和 C。

这些活动中的每一个都承载一个导航抽屉。我试图找出管理这三个活动之间的活动堆栈的最佳方法。

例如,当我启动应用程序时,会启动 Activity A。活动 A 有一个类似于活动 B 和 C 的导航抽屉。当我单击抽屉中的活动 B 时,会启动活动 B,然后单击抽屉中的活动 C 会启动活动 C 等...

当抽屉启动新活动时,我不想完成这些活动,因为它们从后端服务加载数据,并且当我单击后退按钮时,我希望它将应用程序发送到后台。

本质上,我正在寻找一种方法来启动该活动,如果它不存在,如果它存在,就恢复它。我怎样才能做到这一点?

4

1 回答 1

0

我认为从活动中提取数据是最好的选择。

以下段落来自Tasks 和 Back Stack

因为后台堆栈中的活动从不重新排列,如果您的应用程序允许用户从多个活动启动特定活动,则会创建该活动的新实例并将其推送到堆栈(而不是带上任何先前的活动实例)到顶部)。因此,您的应用程序中的一个 Activity 可能会被多次实例化(甚至来自不同的任务),如图 3 所示。因此,如果用户使用“后退”按钮向后导航,则该 Activity 的每个实例都会按照它们的顺序显示已打开(每个都有自己的 UI 状态)。

因此,在您的情况下,当应用程序开始使用异步任务并将它们存储在数据库中时,在后台获取数据可能会更好。

一种方法是:

在创建 home Activity 时,通过异步任务快速抓取 home Activity 的数据,同时显示一个进度条。完成后,将其存储并显示。然后,为其他活动的数据启动异步任务。有些条件可能很棘手。例如,如果用户在数据准备好之前快速切换到活动 B 或 C,则必须确保显示进度条。

如果您不想使用数据库,也许使用单例可能会满足您的需求。根据数据的大小,将数据打包并通过捆绑传递也可能被证明是一种很好的技术。

于 2016-01-26T06:26:36.347 回答