问题标签 [back-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 投票
3 回答
38887 浏览

android - 如果后台堆栈中已经存在,则恢复 Activity 而不是启动

Activity_1经过很多步骤后,我说

Activity_2 > Activity_3 .... 在某些情况下,Activity_n我更改了一些相关的数据Activity_1并使用它来调用它

刷新内容。但后来我可以一直回到Activity_1我开始的地方,那里有旧数据。

相反,我希望使用上面的代码调用初始Activity_1的 's 。onResume()或适当的标志

FLAG_ACTIVITY_CLEAR_TOP

考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 并带有解析为活动 B 的组件的 Intent,则 C 和 D 将完成并且 B 接收给定的 Intent,从而导致堆栈现在是:A,B。

这就是文档所说的,但不是我得到的。

0 投票
1 回答
536 浏览

android - Android:在 singleTop/singleTask 模式下绑定应用程序 (AIDL)

我用 AIDL 文件绑定了 2 个 android 应用程序。A和B应用程序之间的交换如下:

  • A应用通过AIDL接口连接到B应用
  • A应用调用B服务的方法
  • B 服务返回一个 PendingIntent
  • 应用程序启动 PendingIntent
  • 当 B 应用程序中的操作完成时:返回 A 应用程序

但是,如果 B 应用程序在交换之前启动,则在调用“finish()”方法后,用户将被重定向到 B 应用程序的最后一个活动,而不是在 A 应用程序中。

在我的 A 应用程序中:

我尝试在 A 应用程序清单文件中将 android:launchMode 设置为 singleTask 或 singleTop 但问题仍然存在。如您所见,我在发送活动时还放置了一个“FLAG_ACTIVITY_MULTIPLE_TASK”标志。

我的 B 应用程序中的代码:

创建 PendingActivity

在计费活动中

感谢您的阅读!

- -更新

我的 B 活动清单文件:

0 投票
2 回答
683 浏览

android - Back Stack 中只有一项活动

我有 5 个活动:A、B、C、D 和 E。

我可以从每个活动开始所有活动,但我希望 Back Stack 只保存最后一个活动。

例如:A->B->C->D。如果我在 D 中,我可以回到 C,但是现在,在 C 中,当我按下后退按钮时,我只想回到主要活动 (A)。

有可能吗?谢谢!

0 投票
1 回答
98 浏览

android - 允许 backstack 填充数十个重新实例化的活动?

这是一个直截了当的问题,但我找不到任何明确的信息来帮助我做出决定。

我有一个包含 2 个表格(2 个活动)的应用程序,这些表格为给定对象填写,清除,然后为下一个对象填写。在给定应用程序的运行期间,这可能会完成 100 次以上。因此,backstack 可以填充 100 多个活动。

所有这些数据都保存到一个 sqlite 数据库中,所以我应该允许 backstack 像那样填充吗?性能影响是什么 - 存储数百个表单实例肯定会开始产生影响。这些实例是否足够有效地存储以至于我不必担心这一点,或者后台堆栈是否有某种限制?有没有办法让 backstack 只存储输入的数据,或者保存的“实例”是否仅由输入的数据组成?查询一个 sqlite 数据库 onbackpressed 而不是比允许 backstack 加载以前的表单效率低得多?有没有办法重新加载现有实例 alaFLAG_ACTIVITY_SINGLE_TOP并清除现有输入的数据,但将其(数据)保存在后台堆栈中?

我一直在阅读/告诉我修改后退按钮的行为、backstack 和 android 的活动管理是一个坏主意,这让我作为一个 android 新手尝试这样做。

我认为这两种形式的数据的大小不会超过这个问题的第 2 段,仅供参考。

感谢您的帮助。

编辑以回应 JoxTraex:

fill -> add -> fill -> add -> n -> commit

那么可能是

fill activity A and then instantiate and fill B -> transact to DB -> REinstantiate and fill A then REinstantiate and fill B -> transact to DB -> n -> commit

我理解正确了吗?

如果是这样,重新加载而不是实例化 A 和 B 的新实例应该可以解决 backstack 问题,因为其中只会有 2 个活动。

这导致人们对onbackpressed将要做什么感到困惑——它会重新加载先前输入的数据还是工作不超过两次,因为后台堆栈中只有 2 个活动?

0 投票
1 回答
891 浏览

android - 屏幕旋转后webview backstack丢失,页面的后退按钮历史记录,Android

我在 Activity 中有一个 WebView,它在一个屏幕方向上效果很好。我可以导航到网站上的不同页面,当我点击后退按钮时,它会回到我之前访问过的上一个页面,

但是,当我将 Android 平板电脑从一个方向旋转到另一个方向时。就像从肖像到风景一样,这段历史消失了。我通过 saveInstanceState 将 WebView 当前所在的 URL 传递到下一个方向。

屏幕旋转后,新创建的 WeView 会按预期打开指向 URL 的页面。当我点击后退按钮时,它不会去任何地方。

我该如何解决这个问题?

这是我的一些代码,它是我处理后退按钮的部分。

0 投票
3 回答
3197 浏览

android - 恢复 backstack 中不是最顶部的 Fragment

给定的应用程序流程显示在图形和文字描述如下。

申请流程

  1. 通过设置,片段 1 是最低的片段,但不在后台堆栈中disallowAddToBackStack
  2. 片段 2 被推入堆栈,使用fragmentTransaction.addToBackStack().
  3. 片段 1 的新实例被压入堆栈。
  4. 最顶部的片段(片段 1)从堆栈中弹出。
  5. 活动 2 成为前台。
  6. 活动 1 成为前台。

这是我用来处理片段的通用方法:

问题

当活动 1 在最后一步恢复时,片段 1 的最低实例也恢复。此时片段 1 重新null打开getActivity()

问题

  • 为什么恢复堆栈中不是最顶部的片段?
  • 如果恢复片段是正确的 - 我应该如何处理分离的片段?
0 投票
1 回答
1290 浏览

android - 让 onBackPressed() 关闭应用程序

我有一个使用片段的应用程序。在应用程序启动时,我这样做:

如您所见,我没有将其添加到 Backstack 中,因为我不希望用户陷入没有片段的空活动中。然而,这是行不通的。因为当我按下master屏幕上的后退按钮时,它会关闭片段并使我处于黑色活动状态。现在我重写了onBackPressed()帮助我的方法:

但是每当CreamyActivity.this.finish();它再次关闭片段并进入空白活动时(就好像它只是跟随后台堆栈)(这都是在活动中顺便说一句!)

我想知道你是否可以帮助我。通常应用程序不应该自行关闭,但我非常感谢这里的解决方法。还是我在后台做错了什么?它会自动添加它吗?

提前感谢<3

0 投票
1 回答
1810 浏览

android - android中的最大BackStack大小

我是android开发的新手。我需要知道androidBackStack最大内存大小 我想知道有多少Android 应用程序活动可以存储在 BackStack 中

谢谢

0 投票
1 回答
532 浏览

android - 片段之间的后退按钮问题(backstack)

我有一个带有 3 个标签的应用程序。对于其中两个选项卡,我有按钮,可以在其中使用以下代码将当前片段更改为新片段:

对于一个正常片段的选项卡,更改为地图片段后退按钮将我带回原始片段,没有任何问题。

但是,另一个作为 mapfragment 的选项卡,在按下后退按钮时不会给我相同的操作。当它被按下时,它会将视图更改为白色/黑色视图。

这是选项卡中的事务代码,其中后退按钮不起作用:

有谁知道为什么会这样?有什么帮助吗?

0 投票
0 回答
247 浏览

android - 我们如何检查,哪个片段是从 android 的 Back Stack 加载的

我是一名初学者级别的 android 程序员。现在我在进行应用程序开发之后。我在我的应用程序中使用片段。在加载片段时,我隐藏并显示了一些视图。

例如,有 3 个片段(比如 A、B、C)和 3 个视图(比如 View1、View2、view3(这些可能是图像视图))。而我正在加载片段A View1.setVisibility(true) View2.setVisibility(false) View1.setVisibility(false) 并且当我正在加载片段B View1.setVisibility(false) View2.setVisibility(false) View1.setVisibility(true) 像这样对于 Fragment C 也是。但问题是这些被添加到 backstack 中。当按下后退按钮时,当然正在加载正确的片段,但视图可见性没有恢复。

谁能帮帮我谢谢