我正在建立一个聊天客户端Android ICS
。我有一个可以导致聊天活动的名单(联系人)活动(点击名单(联系人)列表中的一个条目后)。然后,人们可以聊天,并可以在点击聊天屏幕上的按钮后回到名单屏幕。荒诞行为的行为
用于创建意图的代码开始活动的标志是:Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
还有名册活动屏幕上的搜索按钮,这需要我们的搜索活动,这又允许我们去聊天活动。
这里使用的标志是相同的。所有三个都是singleTask。
现在的问题是,当我从名册活动到聊天活动,然后回到名册活动,那么一切都很好。但是当我从名册活动去搜索活动,然后去聊天活动,然后回到名册活动,然后名册活动得到重新创建,即oncreate()
名册的功能被称为。这在其他流程中不会发生。
任何人都可以解释这一点。创建一个新的搜索活动可能不赞赏,但假设它的好,可以为什么会发生这种情况的原因?
另外ondestroy()
名册活动没有被称为(因为它不是强制)。
您确定要实际重新排列活动吗?这通常会造成非常尴尬的用户体验,因为它会扰乱访问屏幕的顺序。相反,看看ACTIVITY_CLEAR_TOP,通过维护一个有序的任务堆栈,可以达到类似的效果。 http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP – Matthias
所以如果我使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT那么我的后退按钮不会像我以前想的那样行事?它是一个好点。 – singhsumit
否 - 自从弹出活动A重新排序到活动堆栈的前端时,您将位于堆栈的顶部,此堆栈先前包含A在不同的位置,因此您的用户将遇到“间隙”在活动堆栈中更进一步。 – Matthias