讀古今文學網 > Android程序設計:第2版 > Activity類和運行良好的應用 >

Activity類和運行良好的應用

理解應用的生命週期是實現運行良好的應用的關鍵,而且也是理解應用不能良好運行的關鍵。性能不足、過渡使用資源及不可預期的用戶界面行為都可以通過觀察應用的生命週期來診斷。只是查看代碼或Activity類的文檔頁面不容易理解生命週期。為了使你能夠觀察到應用的生命週期,我們將在Android生命週期方法的實現中加入日誌調用,運行程序,並觀察在運行的程序中生命週期是如何工作的。在使用該框架時,可以在應用中添加這些日誌調用,因為應用往往都需要日誌來診斷問題。

在生命週期變化中調用的大多數方法都是基於組件實現的,有的是基於進程實現的。每個組件類型,如Service、BroadcastReceiver、ContentProvider和Activity,都包含自己的生命週期。除了Activity外,其他組件的生命週期已經在第3章中說明過了。大多數組件的生命週期和Activity的生命週期類似。這是因為Activity類和用戶交互,而當在用戶界面上Activity不再可見時,和該Activity實例關聯的資源所佔用的內存可能已經被清理。管理組件相關的資源所佔用的內存是組件生命週期的主要目的之一。

Activity生命週期和用戶體驗

實際上,如果總體而言,在移動環境下設計良好的應用,則在其生命週期管理中就需要較少的代碼:

·如果Activity使用的數據總是最新的,而且是保存在數據庫中的,就不需要顯式把這些數據保存在代碼中。

·如果用戶界面狀態很少,就不需要在活動生命週期中保存任何狀態。

這些約束看似很嚴格,但是在移動設備及其他家電設備中,它們就不算嚴格了。手機可能隨時沒電,應用在內存中保存的數據模型和狀態越少,當設備意外關閉時,丟失的就越少。手機用戶可能會被電話打擾,用戶沒有機會回到之前的應用中來保存數據。移動應用的工作方式和傳統的個人電腦上的應用不同。在個人電腦上,文件系統中保存的文件被載入內存之後,必須顯式保存,否則數據就丟失了。

在本章以及下一章,你會看到應用的生命週期、數據模型、應用架構的其他方面以及用戶體驗是相互交織的,而最小阻力路徑及在生命週期方法中的實現盡量簡單,都帶來了健壯、易用、符合Android環境及運行良好的應用實現。如果以用戶不再使用活動或系統要殺死活動來收回內存和其他系統資源的方式來處理電源故障,你會簡化實現,這會給用戶帶來良好的體驗。在移動用戶體驗及實現運行良好的應用中,應該避免如「保存」和「取消」這樣顯式的操作。