Android - 带有导航抽屉的活动堆栈/任务

时间:2016-01-26 03:34:51

标签: android android-activity activity-stack

我的申请中有三个顶级活动。活动A,B&下进行。

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

例如,当我启动应用程序时,将启动活动A. 活动A有一个导航抽屉,如活动B& C.当我点击抽屉中的活动B时,活动B启动并点击抽屉中的活动C启动活动C等...

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

基本上,我正在寻找一种方法来启动活动,如果它不存在,如果它存在,只需恢复它。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

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

以下段落来自Tasks and Back Stack

  

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

因此,在您的情况下,当应用程序开始使用async tasks并将其存储在数据库中时,在后台抓取数据可能会更好。

一种方法是:

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

如果您不想使用数据库,也许使用单例可能满足您的需求。根据数据的大小,对数据进行分区并将其传递给捆绑包也可能是一种很好的技术。