[英]Too many Activity in the stack make the app pretty slow
最近,我創建了一個社交應用。 我沒有使用片段,項目幾乎完成了。 我有幾個活動,例如UserProfile,Followers,Follows活動。
通常情況下,它工作正常。 但是,如果用戶單擊UserA UserProfile活動->然后單擊A的關注者->選擇UserB Userprofile活動->單擊B的關注者活動->選擇UserC Userprofile活動...。
在此循環中,該應用程序會變得非常慢,因為它同時打開了太多活動,而后堆棧則保存了所有活動。
我只是想知道是否可以針對這種情況進行任何優化? 因為UserProfile活動布局除用戶信息內容外總是相同的。 即使不同的活動會一個接一個地出現,是否有可能對每個活動使用Fragment?
謝謝!
您應該以其他方式來設計它。 堆棧中只能有一個UserProfileActivity
。 如果您已經在堆棧中擁有用戶A的UserProfileActivity
,並且想要顯示用戶B的UserProfileActivity
,只需使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
調用UserProfileActivity
startActivity()
並傳遞一些附加信息以表明該Activity
應顯示用戶B.您所有活動的概念相同。
為了確保“返回”按鈕導航正常工作,您將需要重寫onBackPressed()
並確定需要顯示哪些Activity
以及哪些數據。 然后調用startActivity()
並設置Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
並提供其他功能,以便Activity
將顯示正確的數據。
為了幫助跟蹤您在導航中的位置,您可能需要創建一堆存儲在static
變量中某處的項目。 每個項目都將指示正在顯示什么Activity
以及帶有哪些數據。 每次啟動新的Activity
,都會將一個新項目推送到該堆棧上,並且每當用戶按BACK鍵時,就會從堆棧中彈出最上面的項目,然后查看其下方的項目以確定要啟動的Activity
以及要發送的額外數據是什么。
使用這種方案,用戶可以整天單擊鼠標,每個Activity
最多只能有一個實例,但是用戶仍然可以一直導航。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.