1. 程式人生 > >android StrictMode設定導致程式崩潰

android StrictMode設定導致程式崩潰

    在andorid開發過程中有時候會用到StrictMode進行相關操作,可以用來幫助開發者發現程式碼中的一些不規範的問題,以達到提升應用響應能力的目的

StrictMode分為以下兩種策略:
1. 執行緒監控策略

2.VM虛擬機器監控策略

  ThreadPolicy執行緒策略檢測

  • 執行緒策略檢測的內容有
  • 自定義的耗時呼叫 使用detectCustomSlowCalls()開啟
  • 磁碟讀取操作 使用detectDiskReads()開啟
  • 磁碟寫入操作 使用detectDiskWrites()開啟
  • 網路操作 使用detectNetwork()開啟

  VmPolicy虛擬機器策略檢測

  • Activity洩露 使用detectActivityLeaks()開啟
  • 未關閉的Closable物件洩露 使用detectLeakedClosableObjects()開啟
  • 洩露的Sqlite物件 使用detectLeakedSqlLiteObjects()開啟
  • 檢測例項數量 使用setClassInstanceLimit()開啟

  使用penaltyDeath()的話,一旦StrictMode訊息被寫到LogCat後會導致應用崩潰。

				StrictMode
						.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
								.detectDiskReads().detectDiskWrites()
								.detectCustomSlowCalls().detectNetwork()
								// .penaltyDialog() // 彈出違規提示對話方塊
								.penaltyLog() // 在Logcat 中列印違規異常資訊
								.penaltyFlashScreen().build());
				StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
						.detectLeakedSqlLiteObjects().detectAll().penaltyLog()
					//.penaltyDeath() //一旦penaltyLog執行,直接導致程式崩潰
						.build());

隨筆寫StrictMode相關內容,Logcat所報錯誤如何解決網上有很多資源,本人也在學習當中,寫下本文供大家參考,有好意見歡迎交流。