簡體   English   中英

堆棧中的活動過多,導致應用程序運行緩慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM