Share via


StrictMode 類別

定義

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 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

StrictMode 最常用來攔截應用程式主線程上的意外磁碟或網路存取,其中會接收UI作業並進行動畫。 將磁碟和網路作業保持關閉主線程,可讓應用程式更順暢且更具回應性。 藉由讓應用程式的主線程保持回應,您也可以防止對用戶顯示 ANR 對話方塊

<p class=“note”請注意,>即使 Android 裝置的磁碟經常在快快快閃記憶體上,許多裝置都會在該記憶體上執行文件系統,且並行存取非常有限。 通常,幾乎所有磁碟存取都是快速的,但在個別情況下,在特定 I/O 在其他進程的背景中發生時,可能會大幅變慢。 可能的話,最好假設這類專案並不快速。

從、 android.app.Activity或其他應用程式元件方法早期android.app.Application啟用的android.app.Application#onCreate範例程式代碼:

public void onCreate() {
                StrictMode.setThreadPolicy(new {@link ThreadPolicy.Builder StrictMode.ThreadPolicy.Builder}()
                        .detectDiskReads()
                        .detectDiskWrites()
                        .detectNetwork()   // or .detectAll() for all detectable problems
                        .penaltyLog()
                        .build());
                StrictMode.setVmPolicy(new {@link VmPolicy.Builder StrictMode.VmPolicy.Builder}()
                        .detectLeakedSqlLiteObjects()
                        .detectLeakedClosableObjects()
                        .penaltyLog()
                        .penaltyDeath()
                        .build());
                super.onCreate();
            }

您可以決定偵測到違規時應該會發生什麼事。 例如,當您ThreadPolicy.Builder#penaltyLog使用應用程式查看違規時,您可以使用 watch 的輸出adb logcat

如果您發現違規有問題,有各種工具來協助解決:線程、 android.os.Handlerandroid.os.AsyncTaskandroid.app.IntentService、 等等。但不要覺得難以修正 StrictMode 找到的所有專案。 特別是,在一般活動生命週期期間,通常需要許多磁碟存取。 使用 StrictMode 來找出您意外所做的事。 不過,UI 線程上的網路要求幾乎一律是個問題。

<p class=“note”>StrictMode 不是安全性機制,不保證會尋找所有磁碟或網络存取。 雖然它會在進行 android.os.Binder 呼叫時跨進程界限傳播其狀態,但最終仍是最佳作法機制。 值得注意的是,來自 JNI 呼叫的磁碟或網路存取不一定會觸發它。

android.os.StrictModeJava 檔。

此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
JniPeerMembers

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

PeerReference

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)
ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)

方法

AllowThreadDiskReads()

接受 目前 ThreadPolicy 來源 #getThreadPolicy的便利包裝函式,會修改它以允許磁碟讀取,並使用 設定新的原則,並傳 #setThreadPolicy回舊原則,以便在區塊結尾還原它。

AllowThreadDiskWrites()

接受 目前 ThreadPolicy 來源 #getThreadPolicy的便利包裝函式,修改它以允許兩個磁碟讀取 & 寫入,並使用 設定新的原則,並傳 #setThreadPolicy回舊原則,以便您可以在區塊結尾還原它。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Dispose()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
Dispose(Boolean)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
EnableDefaults()

啟用建議的 StrictMode 預設值,並只記錄違規。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetThreadPolicy()

傳回目前線程的原則。

GetVmPolicy()

取得目前的 VM 原則。

JavaFinalize()

當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。

(繼承來源 Object)
NoteSlowCall(String)

針對程序代碼,請注意速度很慢。

Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetThreadPolicy(StrictMode+ThreadPolicy)

設定應該偵測到目前線程上哪些動作的原則,以及在這類動作發生時會受到懲罰。

SetVmPolicy(StrictMode+VmPolicy)

設定應該偵測到任何線程上 VM 進程 (哪些動作的原則) ,以及發生這類動作時會受到懲罰。

ToArray<T>()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
Wait()

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>。><

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.Finalized()

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

GetJniTypeName(IJavaPeerable)

StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。

適用於