堆栈中的 Activity 过多会使应用程序变得非常慢

2023-12-03

最近我创建了一个社交应用程序。我没有使用fragment,项目快完成了。我有几个活动,例如用户配置文件、关注者、关注者活动。

通常情况下它工作得很好。但是,如果用户单击 UserA UserProfile 活动 -> 然后单击 A 的关注者 -> 选择 UserB Userprofile 活动 -> 单击 B 的关注者活动 -> 选择 UserC Userprofile 活动...

在此循环中,应用程序会变得相当慢,因为它同时打开了太多活动,并且返回堆栈保存了所有这些活动。

我只是想知道针对这种情况是否可以做一些优化?因为除了用户信息内容之外,UserProfile 活动布局始终相同。是否可以为每个活动使用 Fragment,即使不同的活动会按顺序一一出现?

Thanks!


您应该以不同的方式构建它。你应该只拥有一个UserProfileActivity在堆栈中。如果您已经拥有UserProfileActivity对于堆栈中的用户 A,并且您想要显示UserProfileActivity对于用户B,只需拨打startActivity() for UserProfileActivity with Intent.FLAG_ACTIVITY_REORDER_TO_FRONT并传递一些额外的内容来表明Activity应向用户 B 展示。对您的所有活动使用相同的概念。

为了确保 BACK 按钮导航正常工作,您需要覆盖onBackPressed()并弄清楚什么Activity需要显示以及使用什么数据。然后打电话startActivity()并且还设置了Intent.FLAG_ACTIVITY_REORDER_TO_FRONT并提供额外服务,以便Activity将显示正确的数据。

为了帮助跟踪您在导航中的位置,您可能需要创建一个存储在static某处变量。每个项目都会表明什么Activity正在显示以及使用什么数据。每次推出新产品时Activity,您将一个新项目推入此堆栈,每次用户按 BACK 键时,您都会将顶部项目从堆栈中弹出,然后查看其下面的项目以确定要执行的操作Activity启动以及在附加内容中发送哪些数据。

通过这种方案,用户可以整天点击,并且每个项目永远不会有多个实例Activity,但用户仍然可以一路导航回来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堆栈中的 Activity 过多会使应用程序变得非常慢 的相关文章

  • 移动网站 Facebook 使用 Facebook App 登录以获取登录详细信息

    使用网络浏览器 例如Android 上的 Chrome 如果移动网站要求用户登录 Facebook 而用户没有登录 则即使手机可能通过 Facebook 本机应用程序登录 Facebook 浏览器也会要求用户提供登录详细信息 有没有什么方法
  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • 有没有办法有一个屏蔽数字输入字段?

    我正在 Android 上创建一个 HTML5 应用程序 对于这个特定场景 我们有一个用于信用卡安全代码的输入字段 我们希望强制输入字段仅包含数字并被屏蔽 我没有运气搜索这个特定的案例 从我自己研究 尝试中可以看出 这不能纯粹通过 HTML
  • Kotlin 数据类中的函数作为参数会导致解析错误

    我有一个 Kotlin 帽子中的数据类正在使用 Parcelize注释以方便分割 问题是我现在想将一个函数传递给此类 但我真的不知道如何使该函数在打包过程中不被考虑 这是我的数据类 Parcelize data class GearCate
  • 如何知道哪个用户正在尝试登录?

    用户是使用电子邮件和密码创建的 这就是我进行注册的方式 mSignup setOnClickListener new View OnClickListener Override public void onClick View v mEma
  • 从当前位置出发的移动网络行车路线

    我正在构建一个网站的移动版本 试图通过一键式链接来启动 Google 地图 并提供从用户当前位置到企业的行车路线 我让它在 iPhone 上运行良好 但在 Android 上测试时 它会查看 Current 20Location 并尝试查找
  • __stack_chk_fail_local 和 -fno-stack-protector - 如何让它工作?

    Update 我刚刚发现问题出在我的项目 libxml2 中包含的预构建库上 它是在启用堆栈保护的情况下构建的 因此依赖于 stack chk fail local方法 我现在已经重建了该库 fno stack protector也是 一切
  • Firebase 云消息传递 - 目标到 Firebase 控制台中不可见的单个设备

    我正在尝试向 android 中的单个设备发送通知 但是当我从 Firebase 控制台执行此操作时 它在 Firebase 新视图中不可见 谁能帮助我从哪里向单个设备发送通知 仔细尝试以下步骤 Tap 新通知 Fill up 通知标题 可
  • Gradle 构建无法解析生成的类

    我刚刚将 Android Studio 从 1 5 更新到 2 2 1 Gradle 也是如此 我有一个项目 它使用注释处理器框架 由我制作 来执行类似 Dagger 的依赖注入 这在更新之前工作得很好 但现在 Gradle 无法解析生成的
  • Android:TelephonyManager 类

    我不明白为什么 API 文档中这么写TelephonyManager类是public 但是当我尝试创建一个实例时 它说它不是公共类 并且无法从包中访问 我看到它也说使用Context getSystemService Context TEL
  • 尝试使用 Facebook ID 获取 Facebook 图像时获取空位图

    这是我正在使用的代码 String imageURL Bitmap bitmap null imageURL http graph facebook com fbID picture type try bitmap BitmapFactor
  • 出现软键盘时布局未向上推

    I have designed layout by taking the reference from this https stackoverflow com questions 16411056 how to adjust layout
  • 如何使用Multipart将图像上传到php服务器

    我一直很头疼 如何将图像上传到服务器 这对我来说是新任务 但对我来说很困惑 我在 stackoverflow 上搜索并用谷歌搜索 但我遇到了问题 我的意图是从 SD 卡上传照片并从相机拍照并上传到服务器 在ios中 这个任务已经完成 在io
  • JaCoCo 显示 0% 覆盖率,即使所有测试均已通过

    我在下面写了一些测试用例androidTest目录 我正在使用 androidx testInstrumentationRunner androidx test runner AndroidJUnitRunner 添加的依赖项 androi
  • 在 Android 模拟器中获取互联网连接

    我有一台带有wifi连接的台式电脑 我的IP地址是192 168 12 95 网关是192 168 10 10 但是我在android模拟器中没有获得互联网连接 也就是说我无法访问internate 我也尝试过 emulator avd w
  • 如何使 Edittext 大小保持不变?安卓

    我知道使 Edittext 左侧的文本 消失 以保持单行的属性 singleLine true 但我的问题是 当我在显示视图之前填充编辑文本时 在这种情况下 我的编辑文本都超出了屏幕 有任何想法吗 谢谢 这是填充空的 Edittext 时得
  • SQlite 获取最近的位置(带有纬度和经度)

    我的 SQLite 数据库中存储有纬度和经度的数据 我想获取距我输入的参数最近的位置 例如我当前的位置 纬度 经度等 我知道这在 MySQL 中是可能的 并且我已经做了相当多的研究 SQLite 需要一个自定义外部函数来实现半正弦公式 计算
  • Android Lollipop:将应用程序小部件添加到主屏幕时启动器崩溃

    添加小部件时 启动器在 Android Lollipop 上崩溃 并显示以下消息 在以前的 Android 版本上运行良好 编辑 这只发生在横向方向 12 16 12 35 10 208 E AndroidRuntime 960 java
  • android 填充包含片段的布局

    问题是什么 我如何膨胀包含片段的布局 我不知道错误消息的含义 请帮我 谢谢 错误信息 09 01 18 44 58 698 E AndroidRuntime 20617 Caused by java lang IllegalArgument
  • 如何在ListView中标记视图?

    我有一个带有列表视图的应用程序 列表视图工作正常 当我希望列表以标记的某些行开始时 问题就开始了 如果我按下它 我可以标记一行 但是 似乎没有找到一种方法来在初始化时标记任何行 这是我的代码 listViewOfBluetooth getL

随机推荐

  • Java 中 array.length() 的内部代码是什么?

    数组的第 10 个位置存储了什么 说 int array new int 10 假设我们存储了值array 0 to array 9 如果我要打印元素而不使用 array length or for int a array 我该如何继续 我
  • Matplotlib,绘制 pandas 系列:AttributeError:“tuple”对象没有属性“xaxis”

    我正在绘制 Pandas 系列数据 它记录了 1981 年每周 事件 的总和 该系列被命名为 weekly data 1981 03 16 1826 1981 03 23 1895 1981 03 30 1964 1981 04 06 19
  • 如何用scala'反序列化包含@@的json字符串

    正如标题已经解释的那样 我想反序列化一个包含以 开头的键的 json 字符串 遗憾的是 使用 我使用案例类的标准方法不再起作用了 val test key value case class Test key String not possi
  • 有没有办法使用 google for mkmapview 获取方向(只是路线)?

    我在 iOS 上使用 swift 并使用 MKMapView 我一直致力于为用户提供一个 从 到 文本字段 并让用户在 从 到 位置 之间拥有一种路线形式 我已经使用 Apple 的内置方向和地理编码 api 调用在 mkmapview 上
  • 迭代/循环 Objective C 中类的所有属性

    可能重复 循环访问类中的属性 问题是我在 UITableView 上的每一行上都有多个 UILabel 我需要将模型类的属性 当然是 N SStrings 映射到标签标题 由于有多个标签 超过 12 个 并且在我的项目中以后可能会增加 因此
  • 如何绑定到 ListBox 内与已指定的 ItemsSource 不同的源

    我在 HubSection 中有一个 ListBox 其 Items 绑定到通过后面的代码添加到我的 DefaulViewModel 中的 players 类 首先 我只是将一个 TextBox 绑定到我的类 players 的属性 Pla
  • 确定性地创建和标记 EC2 实例

    我正在创建 3 个 EC2 实例 随后迭代并标记每个实例 有时 标签请求会失败 尽管实例后来看起来正在运行 这可能是一个时间问题吗 创建实例后我应该等待几秒钟再标记它吗 是否有确定的方法来等待它开始 更新20140512 AWS 同时添加了
  • 如何在 TypeScript 中将值传递给 Context Provider?

    我正在尝试将我的反应脚本转换为打字稿 但在定义类型时遇到问题 export const inputListContext createContext
  • 使用 Bcrypt 密码验证登录

    我有一个网站 我正在使用 bcrypt 编写注册 登录系统 我已成功将注册详细信息和哈希密码插入数据库中 我的问题是如何使用此哈希密码对用户进行身份验证 以下是我使用的代码 注册动作 font face arial font
  • 如何将数组传递给 Rails 中的 fields_for?

    我想用fields for在关联中的记录子集上 我有一个Month模型 其中has many payments 但在我看来 以我的形式 我只想拥有fields for其中一些付款 例如 fields for month payments l
  • 简单的 for 循环需要解释

    Since i i是缩写i i i 以下代码 for var i 0 i lt 10 i console log i i 应该输出 1 0 because 0 0 0 i 0 2 2 because 0 1 1 i 2 3 6 becaus
  • Xcode - 基于Target导入具有相同名称的不同头文件

    我有一个具有多个目标的项目 每个目标都构建非常相似的应用程序版本 但具有不同的图像资源和 plist 对于 plists images 来说这很好 但我使用 ShareKit 和 Appirater 框架 它们的配置带有 defines 的
  • iOS 正在将 28.0KB 的一些未知数据从我的应用程序备份到 iCloud

    我的应用程序因未将 不备份 属性设置为我使用的两个内部文件 并存储在 Documents 中 而被拒绝 我已经设置了该属性 并且它不再备份这些文件 11 5MB 但它仍在备份 28kb 的一些数据 我从 Documents 文件夹中删除了所
  • C 中的函数指针如何工作?

    我最近对 C 中的函数指针有了一些经验 因此 按照回答自己问题的传统 我决定对基础知识做一个小总结 供那些需要快速深入了解该主题的人使用 C 中的函数指针 让我们从一个基本函数开始指向 int addInt int n int m retu
  • 如何创建表 AWS Athena --> 映射 Json 数组?

    如何为 Json 数组格式创建表 Athena AWS JSON 格式示例 Tapes Status AVAILABLE Used 0 0 Barcode TEST1217F7 Gateway Test Report UsedGB 0 0
  • 将 ASP.NET MVC 5 从 .NET 4.5 降级到 4.0

    坐着面对一个有趣的问题 服务器不支持 NET 4 5 客户端没有提到这一点 但该应用程序是使用 ASP NET MVC 5 编写的 仅在 NET 4 5 上运行 所以降级dot net就意味着降级ASP NET MVC版本 我们遇到的许多错
  • 展开转场不触发

    我学习得很快 并为我的大部分应用程序奠定了基础 我有以下故事板 应用故事板 一切正常 例如 我在添加课程视图控制器上有一个展开转场 当您按下 保存 并且您返回到 您的课程 视图控制器时 该控制器会触发 当您在我的课程视图控制器上时 您可以选
  • Checkedtextview 滚动Listview后选中/取消选中

    我正在使用 viewHolder 和 getview 在 listvew 中开发 checktextview 填充检查 取消检查状态绑定从数据库运行良好 但是 如果我选中项目然后滚动列表视图 它将返回取消选中 这是我的自定义适配器代码 pu
  • SQLite 存储、检索和比较 DATETIME 字段

    我真的很难在 Objective C 中比较 SQLite 查询中的日期 这就是我正在做的事情 存储日期 这个文件告诉我使用下面指定的日期格式 但它似乎不正确 我尝试使用yyyy MM dd hh mm ss但也没有成功 NSDate to
  • 堆栈中的 Activity 过多会使应用程序变得非常慢

    最近我创建了一个社交应用程序 我没有使用fragment 项目快完成了 我有几个活动 例如用户配置文件 关注者 关注者活动 通常情况下它工作得很好 但是 如果用户单击 UserA UserProfile 活动 gt 然后单击 A 的关注者