问题标签 [activity-stack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1262 浏览

android - 子活动关闭时更新活动

我有一个活动堆栈,如:

我想更新活动 A 的视图,因为活动 C 所做的修改已经更新了数据库,也许我有不同的东西要在活动 A 中列出。

如果我的主要活动是这样的:

我必须写 onResume() 吗?并使其类似于 onCreate?或者我可以使用相同的光标、相同的适配器等来“更新”视图?什么是更好的?

0 投票
4 回答
31686 浏览

android - 如何控制Android回栈

可以说我有

A->B->C->D->E

在 android 后栈中。我希望能够回到以下其中一项:

我怎样才能做到这一点?希望不要强迫点击后退按钮。

0 投票
2 回答
5956 浏览

android - 后退按钮重新启动活动而不是返回

我的应用程序中有一个错误,我无法弄清楚。共有三个活动: HomeActivity - A、 TestActivity -B和 ResultActivity - C

活动以正常方式A启动B

然后活动以相同的方式B启动C。完成C后,它会像这样返回A清除堆栈

现在这个过程可以无限重复,没有任何问题。但是,我有一个快捷方式,可以让用户BCvia开始,方法是向which uses to startA发送参数。现在发生的情况是,如果我按下后退按钮,处于活动状态,活动将重新启动,而不是返回到.A intent.putExtra("startTest", true);ABBA

根据以下内容,活动堆栈似乎很好adb shell dumpsys activity

我按下后退按钮多少次都没关系。堆栈保持不变,活动B不断重新启动。

现在到更奇怪的部分:如果我双击后退按钮,它确实会回到堆栈中给我活动A

我对后退按钮没有任何特殊处理,因为它在案例 1 中运行良好,但在案例 2 中运行良好,我真的迷路了。搜索并没有真正让我得到任何东西,所以任何见解都会受到赞赏。

编辑 以下是我认为活动中的相关内容

0 投票
4 回答
578 浏览

android - Android加载活动堆栈,与后退按钮

目前关于后退按钮的最佳做法是什么?

许多应用程序在您打开它们时会保存和恢复整个活动堆栈(在它们已经 onStop 和 onDestroyed 之后),以 Facebook 为例,当您打开它并且您的最后一个位置在照片中时,然后按回不会关闭 Facebook 应用程序,它会无限地回到您几天前打开该应用程序时所做的第一件事。

我认为,这种设计约定与后退按钮的预期功能有些不同。它通常用于终止应用程序或停止将您带回设备启动器屏幕的主视图。

Facebook 只是这样做的应用程序的一个例子。

是否有开发人员文章或像 Google I/O 这样的权威来源讨论此功能的实用性(恢复活动堆栈并让后退按钮遍历它们)与其他功能(杀死视图将用户从应用程序中退出)?如果是这样,请在此处讨论并链接它们。我希望这不会被认为太主观,因为有正确使用后退按钮以及错误使用

0 投票
1 回答
113 浏览

android - 实施类似于“不保留活动”的行为

在我的应用程序中有一个场景,它可以无限地进行活动 a-> 活动 b-> 活动 a-> 活动 b...,最终它会得到 OOM。

有没有人知道一种使它像“不保留活动”行为的方法,例如活动将被杀死以释放内存但仍然在历史中,所以它可以在用户导航回来时重新创建?

0 投票
1 回答
189 浏览

android - 从 BroadcastReceiver 启动 Activity - 解除它不应返回到我的应用程序堆栈中的先前活动

这是我的场景 - 应用程序以 Activity A 开始,它是主要的启动点。还有从 A 启动的各种其他活动,比如 B 和 C。从 A 到 B 应该是可逆的(按下实际上返回),所以我需要在活动堆栈上的每个 A,对于 A => C 和返回也是如此。默认情况下,所有这些都可以正常工作。

现在变得棘手了:我有另一个活动,比如 X,它可以从后台进程(广播接收器)启动。当 X 启动时,它应该替换当前屏幕上的任何内容——那部分没有问题。然后 X 可以被用户解雇(以 finish() 和 startActivity(A) 结尾 - 所以我没有 X 在堆栈上)。它也可以由后台进程完成(广播接收器接收另一个意图) - 在后一种情况下我有问题。

我仍然在 X 上调用 finish(),现在发生了以下情况:无论哪个 Activity 先前处于活动状态(比如 A),都会再次显示。如果 A 在 X 启动之前显示,那很好,但是,如果我的应用程序在后台,一旦 X 被关闭,我希望恢复启动 X 之前的状态(所以要么显示主屏幕,要么显示在 X 之前运行的任何应用程序推出)。如果您想知道..我为什么要打扰用户-这是有充分理由的(这是一个电话应用程序,来电应该中断)。

似乎当我在 X 上调用dismiss时,应用程序将返回到活动堆栈中的任何其他内容。如果应用程序在 X 启动时处于前台,那很好,但如果不是,我希望 X 被关闭,并且无论哪个应用程序处于活动状态,都可以再次处于顶部。

以下是我在启动 X 时使用的意图标志: FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_NEW_TASK

我已经尝试过 FLAG_ACTIVITY_MULTIPLE_TASK 但结果不太令人满意(如果我的应用程序在后台运行,这会阻止它在 X 在没有用户干预的情况下被关闭时出现在顶部,但是在应用程序历史记录中,它会显示 X并且 X 永远不应该在那里显示,而且如果用户实际选择了它,肯定会启动 X,这很糟糕。

这么简单

电话处于状态 S1 X 已启动 X 通过调用 finish() 在没有用户交互的情况下关闭 电话应返回状态 S1

这可以以某种方式实现吗?

0 投票
1 回答
2276 浏览

android - 完成特定活动的所有实例

应用程序中可能有很多活动,最后启动的活动保持在堆栈顶部,并在按下它时完成当前活动。我有一个活动序列,这是流程..

如果我们有 A,B, C(1) ,D, C(2) ... Activity C(1) 和 C(2) 是在导航应用程序时启动的 Activity C 的两个不同实例。所以需要的是清除活动 C 的所有实例,结果应该是当我完成C(2)时,我应该留下这些堆栈A,B,D。我应该怎么办 。

IMP - 我想让C(1)在堆栈中保持活动状态,直到我完成 C(2),因为我可以使用 New Task 标志启动 C 而不是创建这些实例,但是这些实例具有不同的 UI 和工作。

以下方法是不利的。

第一的

这将从堆栈中清除所有活动并重新启动活动

第二

跟踪单例类中的 Activity,然后重新启动所需的流程,这将如何消耗有许多要启动的 Activity 的时间。

所以我认为应该有一些使用包管理器或其他可以解决问题的解决方案,解决方案表示赞赏

0 投票
1 回答
517 浏览

android - Android Activity 任务在前台

我有 3 个活动任务 ABC

我有一个Service使用 GPS 的LocationManager

我的应用程序有这个逻辑:

  1. 单击启动器图标 - > 开始登录活动
  2. 登录后 - > 登录活动是完成();并启动dashboardActivity
  3. 在仪表板中,我开始CreateNewPolygonActivity使用ServiceGPS
  4. 按 HOME(这是重新组织RecordActivity到前台)

在我有一些错误之后工作

  1. 打开CreateNewPolygonActivityonCreate
  2. 打开DashboardActivity

我认为我的任务组织有问题。

0 投票
2 回答
80 浏览

android - 在两个活动之间切换

想象一下,您有 2 个活动 - A 和 B。您从 A 开始 B。在 B 中您有一个任务。如果任务完成,您想在按下返回键时返回 A,如果您不想关闭整个应用程序。但解雇后,您可以从最近的应用程序菜单中恢复 B。如果在那之后你需要返回键的相同行为。

所以我只想取消一项活动或整个应用程序(但可以恢复)。有没有办法做到这一点?

0 投票
2 回答
105 浏览

android - Android如何在另一个应用程序启动之前打开应用程序的堆栈?

我正在通过我的应用程序启动另一个应用程序,所以我想检查该应用程序的任何实例是否已经在堆栈中?如果存在则在启动前清除所有实例。