Android:创建新活动的新实例

时间:2016-03-10 00:57:56

标签: java android android-intent

我对一些基本的android开发概念感到困惑,我的问题并不是指向一个特定的代码,这就是为什么我不包含任何代码。

  1. 假设我有一个活动,其中我有一个容器,我在其中加载了几个片段(它们是同一片段的多个实例),现在活动已填充,并且在一个片段内我按一个打开新活动的按钮,在该活动中可能发生的事情并不重要,问题是,当我按下按钮时,它应该带我回到previos活动,我知道按下后退按钮或使用{{ 1}}会把我带回我已经填充的活动,但是我想知道,如果这是正确的事情,或者我应该在我离开下一个活动后立即完成活动,当我想要去back创建一个新实例并重新填充它,如果是,我应该在哪里存储变量?

  2. 假设我提到的片段是警报应用程序的“警报”,当我创建它时,我调用.finish();,然后在警报活动中将该警报添加到arrayList(java class)AlarmFragment newAlarm = new AlarmFragment();保留在具有片段容器的活动上,问题是,这些变量是在正确的位置创建的吗?因为我把它们留在活动本身里面了吗?如果活动被破坏会发生什么?我被告知我应该创建一个用于存储这些变量的SQL数据库。我不是在谈论长期保存,而是我将在运行时使用的变量

  3. 有人能解释一下这些概念吗?指向它的地方的链接也很棒。

1 个答案:

答案 0 :(得分:0)

您的问题似乎有很多部分。

在第1部分中,我认为这就是你所说的:

enter image description here

1)您决定让用户回到第一个活动的方式取决于您自己。 2)您在Back Stack中留下的内容也取决于您以及您希望为应用中的用户功能定义的内容。例如,如果您希望它们只能使用您在Activity 2容器中定义的按钮,那很好。但是,您不需要在活动2中提供按钮,并且您当然可以使用应用栏中的“向上操作”进行导航。如果我是你,我会阅读更多有关任务和后台堆栈的信息http://developer.android.com/guide/components/tasks-and-back-stack.html

你还提到了必须用.finish()“完成一项活动”的想法。我认为这通常不是必需的,但是如果你想根据你对应用程序逻辑的决定(以及用户应该和不应该做什么)来使用它,它就可以使用了。

使用“返回”按钮,当您从“活动2”返回时,活动1将显示为刚刚初始化。请尝试使用。还可以根据我提供的简单图表和Lifecycle“回调”运行一些Log语句(将这些方法放在您的活动中,并在每个语句中抛出一条Log语句,以便更好地了解您在生命周期中的位置)http://developer.android.com/guide/components/activities.html#Lifecycle

enter image description here

关于你问题的第2部分,我首先尝试/设置上面的一些,然后开始尝试使用单个变量来查看活动之间发生的变化。你的问题有很多“假设”。你不必必须创建一个DB来存储你的变量,但这肯定是一个选择。请查看大多数数据存储选项的开发人员指南:http://developer.android.com/guide/topics/data/data-storage.html

如果您担心在销毁活动时丢失数据,我可能会考虑创建一个数据库。阅读以下内容,了解有关在您去其他地方并返回时重新创建活动的更多信息:http://developer.android.com/training/basics/activity-lifecycle/recreating.html特别是保存您的活动状态:http://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState

此处还有一篇SO帖子:Saving Android Activity state using Save Instance State