StrictMode(嚴(yán)格模式)是一個(gè)在多種編程環(huán)境中都存在的概念,用于幫助開(kāi)發(fā)者檢測(cè)和改進(jìn)代碼的質(zhì)量和性能。在Android開(kāi)發(fā)中,StrictMode 可以識(shí)別并報(bào)告應(yīng)用程序中的線程和虛擬機(jī)(VM)策略違規(guī)。
線程策略主要關(guān)注應(yīng)用程序的主線程(UI線程)的行為。任何阻塞主線程的操作都可能導(dǎo)致應(yīng)用程序變得無(wú)響應(yīng)(ANR)。線程策略可以檢測(cè)以下類型的違規(guī):
虛擬機(jī)策略關(guān)注虛擬機(jī)級(jí)別的違規(guī),如內(nèi)存泄漏和不必要的對(duì)象創(chuàng)建。虛擬機(jī)策略可以檢測(cè)以下問(wèn)題:
在Android應(yīng)用程序中啟用StrictMode通常在應(yīng)用程序的入口點(diǎn)(Application類或主Activity的onCreate方法)中調(diào)用StrictMode的靜態(tài)方法。
if (BuildConfig.DEBUG) { //開(kāi)啟Thread策略模式 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectNetwork()//監(jiān)測(cè)主線程使用網(wǎng)絡(luò)io .detectCustomSlowCalls()//監(jiān)測(cè)自定義運(yùn)行緩慢函數(shù) .detectDiskReads() // 檢測(cè)在UI線程讀磁盤操作 .detectDiskWrites() // 檢測(cè)在UI線程寫(xiě)磁盤操作 .penaltyLog() //寫(xiě)入日志 .penaltyDialog()//監(jiān)測(cè)到上述狀況時(shí)彈出對(duì)話框 .build()); //開(kāi)啟VM策略模式 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects()//監(jiān)測(cè)sqlite泄露 .detectLeakedClosableObjects()//監(jiān)測(cè)沒(méi)有關(guān)閉IO對(duì)象 .setClassInstanceLimit(MainActivity.class, 1) // 設(shè)置某個(gè)類的同時(shí)處于內(nèi)存中的實(shí)例上限,可以協(xié)助檢查內(nèi)存泄露 .detectActivityLeaks() .penaltyLog()//寫(xiě)入日志 .penaltyDeath()//出現(xiàn)上述情況異常終止 .build());}
本文鏈接:http://www.tebozhan.com/showinfo-26-89550-0.htmlAndroid開(kāi)發(fā)中StrictMode的妙用,幫助開(kāi)發(fā)者檢測(cè)并改進(jìn)代碼的質(zhì)量和性能
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 首個(gè)能發(fā)布實(shí)況照片的安卓機(jī)!OPPO Reno12 系列實(shí)現(xiàn)行業(yè)突破