App 出現的問題爲:java
錄製video 時,shutter sound的聲音不統一,時有時無。ide
進入Camera應用--> 錄像開始 --> 點擊shutter時,無shutter sound --> 錄像中止時,click shutter,無shutter sound --> 播放錄製的視頻 --> back鍵,返回到取景界面 --> 再次錄像 ,有shutter sound.code
分析:視頻
只要點擊back鍵,再次錄製視頻的時候,shutter sound不是預期的結果,推斷出在onResume()方法中,沒有從preference.xml中取KEY_SHUTTER_SOUND的值,而發生來默認行爲。查看代碼xml
String cameraSound = mPreferences.getString(CameraSettings.KEY_SHUTTER_SOUND, getString(R.string.pref_camera_shutter_sound_default)); if (cameraSound != null) { int shutterSound = cameraSound.equals("on") ? 1 : 0; mCameraDevice.setCameraShutterSound(shutterSound); }
發現上述代碼出如今onCreate()方法中,而onResume()無相似的代碼。將此代碼從onCreate()方法中move到onResume()方法中,問題獲得解決。生命週期
至此深入地理解了Activity的生命週期。get
從上圖可知, 第一次啓動Camera,進入取景界面,並開始錄像,onCreate()方法得以執行,則shuttersound的value會從preference.xml中取得,接着用戶點擊播放錄製的視頻,而後back鍵回到取景的界面,再次錄像,本次click shutter的時候,執行的是onResume()方法,而onResume()方法中shuttersound並無從preference.xml中進行取值,而是調用默認的string
R.string.pref_camera_shutter_sound_default
而我已經在string.xml中設定該值爲on。it