【问题标题】:What is difference between Activity getIntent and TaskStackBuilder getIntent()?Activity getIntent 和 TaskStackBuilder getIntent() 有什么区别?
【发布时间】:2023-03-18 09:07:01
【问题描述】:

正如我从谷歌博客post 中读到的那样,我们开始使用 startActivity() 的每个活动都添加到后台堆栈中,那么如果我尝试从 TaskStackBuilder 而不是 Activity getIntent() 中获取 getIntent() ,我能得到相同的结果吗?活动意图?

我正在尝试理解任务和回栈,请帮助我是否理解正确?

【问题讨论】:

  • 你真的需要使用TaskStackBuilder吗?因为它已被弃用。但是,基本上,当我们希望用户在按下返回按钮后导航到另一个活动时,我们会使用它。
  • “当我们希望用户在按下后退按钮后导航到另一个活动时,我们会使用它”:这意味着它存储了所有活动意图(在我看到 TaskStackBuilder 源代码的列表中)所以我们不能使用索引或某种方式获得特定活动的意图吗?
  • 使用“TaskStackBuilder”可能非常棘手。它做了很多假设并试图“做正确的事”,这通常是错误的事情,并且您的应用程序不会按照您想要的方式运行。通过基本上告诉人们不要使用它,我已经回答了很多关于此的问题,因为它在幕后做了很多没有很好记录的事情。为了帮助您,请说明您想要做什么。

标签: android android-intent android-activity


【解决方案1】:

用于在 Android 3.0 和更高版本上构建用于跨任务导航的合成返回堆栈的实用程序类。

在 API 级别 11 (Android 3.0/Honeycomb) 中,使用返回键进行应用导航的推荐约定发生了变化。后退键的行为是当前任务的本地行为,不会捕获跨不同任务的导航。跨任务导航和轻松到达上一个任务是通过“最近” UI 完成的,可通过导航或系统栏上软件提供的“最近”键访问。在具有较旧硬件按钮配置的设备上,可以通过长按 Home 键访问最近的 UI。

当从一个任务堆栈切换到另一个 Android 3.0 后版本时,应用程序应该为新任务合成一个返回堆栈/历史记录,以便用户可以通过反复按返回键。后退键不应跨任务堆栈导航。

TaskStackBuilder 提供了一种向后兼容的方式,可以在设备版本的平台上遵守有关跨任务导航的正确约定。在运行 Android 3.0 或更高版本的设备上,调用 startActivities() 方法或发送由 getPendingIntent(int, int) 生成的 PendingIntent 将按照规定构建合成回栈。在运行旧版本平台的设备上,这些相同的调用将调用提供的堆栈中最顶层的活动,忽略合成堆栈的其余部分并允许返回键导航回上一个任务。

活动 getIntent() 返回启动此活动的意图。

【讨论】:

  • 从文档中复制和粘贴并不是回答问题的最佳方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多