堆栈中的活动太多会使应用程序变得非常慢

时间:2016-11-10 22:43:33

标签: android android-fragments android-activity

最近我创建了一个社交应用。我没有使用片段,项目几乎完成。我有几个活动,如UserProfile,Followers,Followings活动。

通常它运作正常。但是,如果用户单击UserA UserProfile活动 - >然后单击A的关注者 - >选择UserB Userprofile活动 - >点击B的关注者活动 - >选择UserC Userprofile活动....

在这个循环中,应用程序会变得相当慢,因为它同时打开了太多活动而后端堆栈包含所有这些活动。

我只是想知道我能为这种情况做出任何优化吗?因为除了用户信息内容之外,UserProfile活动布局总是相同的。是否可以对每个活动使用Fragment,即使不同的活动会逐个按顺序显示?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

要确保BACK按钮导航正常工作,您需要覆盖Activity并找出需要显示onBackPressed()的内容以及使用哪些数据。然后拨打Activity并设置startActivity()并提供额外内容,以便Intent.FLAG_ACTIVITY_REORDER_TO_FRONT显示正确的数据。

为了帮助跟踪您在导航中的位置,您可能希望创建一个存储在某个Activity变量中的项目堆栈。每个项目都会指出显示static的内容以及显示的数据。每次启动新的Activity时,都会将新项目推送到此堆栈,每次用户按下BACK键时,都会从堆栈中弹出顶部项目,然后查看其下方的项目以确定什么Activity开始以及在附加内容中发送什么数据。

使用此方案,用户可以整天点击一下,每个Activity永远不会有多个实例,但用户仍然可以一直导航。

相关问题