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 最常用來攔截應用程式主線程上的意外磁碟或網路存取,其中會接收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.Handler
、 android.os.AsyncTask
、 android.app.IntentService
、 等等。但不要覺得難以修正 StrictMode 找到的所有專案。 特別是,在一般活動生命週期期間,通常需要許多磁碟存取。 使用 StrictMode 來找出您意外所做的事。 不過,UI 線程上的網路要求幾乎一律是個問題。
<p class=“note”>StrictMode 不是安全性機制,不保證會尋找所有磁碟或網络存取。 雖然它會在進行 android.os.Binder
呼叫時跨進程界限傳播其狀態,但最終仍是最佳作法機制。 值得注意的是,來自 JNI 呼叫的磁碟或網路存取不一定會觸發它。
的 android.os.StrictMode
Java 檔。
此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
JniIdentityHashCode |
StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。 (繼承來源 Object) |
JniPeerMembers |
StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。 |
PeerReference |
StrictMode 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
方法
AllowThreadDiskReads() |
接受 目前 |
AllowThreadDiskWrites() |
接受 目前 |
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 是一種開發人員工具,可偵測您意外執行的專案,並讓他們注意,以便修正它們。 |