Google嚴苛模式【調試、最佳化、檢查】讓你的APP更優,突破最佳化瓶頸

來源:互聯網
上載者:User

標籤:嚴苛模式   google   strictmode   

1.什麼是嚴苛模式(StrictMode)

StrictMode是一個開發工具,檢測到你可能的事情 偶然做的就讓你的注意力,這樣你就可以修複 他們。

StrictMode是最常用的磁碟或意外 網路訪問應用程式的主線程,UI 操作和動畫進行接收。 保持磁碟 和網路業務主線程會更為順暢, 應用程式更加敏感。 通過保持應用程式的主線程 響應,你也阻止 ANR對話方塊 顯示給使用者。

注意,即使Android裝置的磁碟 通常在快閃記憶體,很多裝置檔案系統上運行 記憶有非常有限的並發。 這是常有的事 幾乎所有的磁碟訪問都是快,但在個別情況下可能 大幅放緩時,在後台發生的某些I / O 從其他進程。 如果可能的話,最好是假設等 事情並不快。

2.嚴苛模式的用法

google的樣本如下:

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

只需要在super.onCreate()方法加上這句就OK了

3.最佳化嚴苛模式,讓它成為真正的工具

我們可以寫到BaseActivity中,讓其他Activity繼承自這個BaseActivity,並且設定一個開關來控制它DEVELOPER_MODE

4.查看log日子資訊

先看下邊一段代碼

/** * Created by zsl on 2014/12/31. */public class StrictModeActivity extends BaseActivity implements BaseActivityInterface,View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        AppConfig.setDeveloperMode();        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initEvent();        initData();    }    @Override    public void initView() {    }    @Override    public void initEvent() {    }    @Override    public void initData() {        String url="http://g.hiphotos.baidu.com/image/w%3D310/sign=7725d8ccd3a20cf44690f8de46084b0c/e1fe9925bc315c601a0f34a48eb1cb13485477e6.jpg";        try {            URL url1 = new URL(url);            HttpURLConnection connection = (HttpURLConnection) url1.openConnection();            connection.setConnectTimeout(15000);            connection.setReadTimeout(10000);            connection.setRequestMethod("GET");            connection.setDoInput(true);            connection.connect();            connection.getInputStream();        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void onClick(View v) {        switch (v.getId()){            case 1:{                break;            }            default:{                break;            }        }    }}

我是在主線程去直接存取了網路,一般情況下我們如果這樣做了,網路狀況好的情況下,不會有任何的影響。
但是我們加上嚴苛模式以後的查看一下會有什麼效果呢?

log日子中會報錯,並且出現StrictMode的關鍵字,並且會爆出錯誤的原因和需要改進的地方
最後在模擬器上會重新彈出一個不可點擊的介面,這就說明你需要做一些最佳化了

5.總結

嚴苛模式檢查什嗎?
檢查在主線程的耗時操作:網路訪問、複雜動畫、磁碟讀寫,等

Google嚴苛模式【調試、最佳化、檢查】讓你的APP更優,突破最佳化瓶頸

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.