StrictMode 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。
[Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)]
public sealed class StrictMode : Java.Lang.Object
[<Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)>]
type StrictMode = class
inherit Object
- 繼承
- 屬性
備註
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。
StrictMode 最常用於偵測應用程式主執行緒中意外的磁碟或網路存取,該執行緒接收使用者介面操作並進行動畫。 將磁碟和網路操作排除在主執行緒之外,能讓應用程式更順暢、反應更快。 透過保持應用程式主執行緒的響應式,也能防止 ANR 對話 框顯示給使用者。
請注意,即使 Android 裝置的磁碟常常使用快閃記憶體,許多裝置仍會在該記憶體上執行檔案系統,並行性非常有限。 通常幾乎所有磁碟存取都很快,但當背景有其他程序進行某些 I/O 時,速度可能會明顯變慢。 如果可能,最好假設這些東西不會快速。
範例程式碼可在你 、 android.app.Application或其他應用程式元件android.app.Activity方法的早期android.app.Application#onCreate啟用:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.build()
)
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectAll()
.build()
)
}
你可以決定當違規被偵測到時應該怎麼處理。 例如,你可以 ThreadPolicy.Builder#penaltyLog 在使用應用程式時觀看 的 adb logcat 輸出,隨時查看違規發生的過程。
如果你發現違規行為有問題,有各種工具可以協助解決:threads、 android.os.Handler、 android.os.AsyncTask、 android.app.IntentService、 等等。但不要覺得必須修正 StrictMode 發現的所有問題。 特別是,許多磁碟存取的情況在正常活動生命週期中往往是必要的。 用 StrictMode 找出你不小心做過的事。 不過 UI 執行緒上的網路請求幾乎總是有問題。
嚴格模式並非安全機制,且不保證能找到所有磁碟或網路存取。 雖然它在呼叫 android.os.Binder 時會跨越程序邊界傳播狀態,但最終仍是盡力而為的機制。 值得注意的是,來自 JNI 通話的磁碟或網路存取不一定會觸發這個問題。
的 android.os.StrictModeJava 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| JniPeerMembers |
提供此類型的 JNI 同儕成員元資料。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
方法
| 名稱 | Description |
|---|---|
| AllowThreadDiskReads() |
一個便利包裝器,會從 中取 current |
| AllowThreadDiskWrites() |
一個便利包裝器,從 取 電流 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| EnableDefaults() |
啟用建議的 StrictMode 預設值,違規行為只會被記錄。 |
| Equals(Object) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetThreadPolicy() |
回傳目前執行串的政策。 |
| GetVmPolicy() |
會取得目前的虛擬機政策。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| NoteSlowCall(String) |
程式碼要注意它很慢。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| SetThreadPolicy(StrictMode+ThreadPolicy) |
設定目前執行緒中應偵測哪些動作的政策,以及若發生此類動作的懲罰。 |
| SetVmPolicy(StrictMode+VmPolicy) |
設定虛擬機程序(在任何執行緒)中應偵測哪些動作的政策,以及發生此類動作時的懲罰。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
StrictMode 是一個開發者工具,能偵測你可能不小心做錯的事情,並提醒你,讓你能修正。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |