編輯:關於Android編程
自Android 2.3提供一個稱為嚴苛模式(StrictMode)的調試特性,Google稱該特性已經使數百個Android上的Google應用程序受益。那它都做什麼呢?它將報告與線程及虛擬機相關的策略違例。一旦檢測到策略違例(policy violation),你將獲得警告,其包含了一個棧trace顯示你的應用在何處發生違例。你可以強制用警告代替崩潰(crash),也可以僅將警告計入日志,讓你的應用繼續執行。
和線程相關,它主要針對主線程(或UI線程)。由於在主線程中讀寫磁盤和進行網絡訪問都不是好的做法,Google已經在磁盤和網絡代碼中添加了嚴苛模式(StrictMode)鉤子(hook)。如果你對某個線程打開嚴苛模式(StrictMode),當那個線程進行磁盤和網絡訪問,你將獲得警告。你可以選擇警告方式。一些違例包含用戶慢速調用(custom slow calls 這麼翻譯行嗎?),磁盤讀寫,網絡訪問。你能選擇將警告寫入LogCat,顯示一個對話框,閃下屏幕,寫入DropBox日志文件,或讓應用崩潰。最通常的做法是寫入LogCat或讓應用崩潰。
check read/write disk, access network and show call in thread
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build());
還有一種虛擬機策略(VmPolicy),能檢查內存洩漏,譬如,當關閉一個SQLite對象前的完結操作,或其他任何類似可關閉對象在關閉前的完結操作。虛擬機策略(VmPolicy)由一個類似的Builder類創建.和線程策略(ThreadPolicy)不同的是,虛擬機策略(VmPolicy)不能通過一個對話框提供警告。
check leaks for cursor, close method, activity instance, object instance and registration in process
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build());
public class UILApplication extends Application { @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressWarnings(unused) @Override public void onCreate() { if (DEVELOPER_MODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDialog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyDeath().build()); } super.onCreate(); } }
最近剛換了電腦,開始搭建Android開發環境的時候,下載SDK總是會出現如下錯誤:復制代碼 代碼如下:Failed to fetch URL http://dl-ssl
下面是開始Android編程的好方法:找一些與你想做事情類似的代碼調整它,嘗試讓它做你像做的事情經歷問題使用StackOverflow解決問題對每個你像添加的特征重復上述
打開PopupWindow的源碼,你會發現它其實也是通過WindowManager來添加view的。 private void invoke
這篇將會介紹裝飾者模式(Decorator Pattern),裝飾者模式也稱為包裝模式(Wrapper Pattern),結構型模式之一,其使用一種對客戶端透明的方式來動