今天接到一個電話面試宛逗,就問了一個問題吧彪,說:你詳細說一下生命周期中onPause土铺。
這肯定是學習Android的第一課,但是面試官問我這個問題明顯是問我深度而不是廣度瘾腰,我只是簡單地回答了一句皆的,是可見但不可操作的,我覺得我GG了蹋盆,趕快上來學習祭务。
當系統(tǒng)調(diào)用activity的onPause()時,
雖然從技術(shù)角度來講你的activity是可見的内狗,但是更通常這也預(yù)示著用戶會離開這個activity,然后你的activity會進入stop狀態(tài)义锥。
基于這種實際情況柳沙,通常你應(yīng)該在onPause()方法里面做如下事情:
1.停止一切動畫效果,或者其他消耗cpu的行為拌倍。
2.在離開之前提交未被保存改動赂鲤,你應(yīng)該只保存那些用戶認為應(yīng)該保存的數(shù)據(jù),比如在郵箱應(yīng)用中柱恤,用戶正在向文本輸入框中寫入文字数初,那么這種改動 被保存下來才顯得合理。
3.釋放系統(tǒng)資源梗顺,比如廣播接受者泡孩,傳感處理器(gps等),或者其他影響電池消耗的東西寺谤,因為在pause狀態(tài)下用戶并不需要他們仑鸥。
一般來說,你不要在onPause()中保存用戶的改動(比如用戶正在填寫的私人信息的表格)变屁,只有當你確信用戶希望自己修改的東西被保存的時候
比如剛剛提到的用戶在寫一封郵件的草稿眼俊。另外,在onPause中要避免發(fā)生cpu敏感的行為粟关,比如寫入數(shù)據(jù)庫疮胖,這會影響切換到下一個activity的顯示效果。
總之闷板,在onPause中的操作都應(yīng)該是非常簡單的澎灸,低性能消耗的,確保在onStop()被調(diào)用時遮晚,用戶向其他界面的切換是迅速流暢的性昭。