最近我创建了一个社交应用。我没有使用片段,项目几乎完成。我有几个活动,如UserProfile,Followers,Followings活动。
通常它运作正常。但是,如果用户单击UserA UserProfile活动 - >然后单击A的关注者 - >选择UserB Userprofile活动 - >点击B的关注者活动 - >选择UserC Userprofile活动....
在这个循环中,应用程序会变得相当慢,因为它同时打开了太多活动而后端堆栈包含所有这些活动。
我只是想知道我能为这种情况做出任何优化吗?因为除了用户信息内容之外,UserProfile活动布局总是相同的。是否可以对每个活动使用Fragment,即使不同的活动会逐个按顺序显示?
谢谢!
答案 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
永远不会有多个实例,但用户仍然可以一直导航。