MASTG-KNOW-0009: StrictMode

O StrictMode é uma ferramenta de desenvolvimento para detectar violações, como acesso acidental a disco ou rede na thread principal do aplicativo. Também pode ser usado para verificar boas práticas de codificação, como a implementação de código com bom desempenho.

Diferentes políticas podem ser definidas usando o ThreadPolicy Builder e o VmPolicy Builder.

A reação a violações de política detectadas pode ser configurada usando um ou mais métodos penalty*. Por exemplo, penaltyLog() pode ser ativado para registrar qualquer violação de política no log do sistema.

Abaixo está um exemplo de StrictMode com políticas ativadas para acesso a disco e rede na thread principal. Se isso for detectado, uma mensagem de log será gravada no log do sistema e o aplicativo será forçado a encerrar.

public void onCreate() {
     if (BuildConfig.DEBUG) {
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // ou .detectAll() para todos os problemas detectáveis
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     }
     super.onCreate();
 }

Recomenda-se incluir a política na instrução if com a condição BuildConfig.DEBUG para ativar automaticamente as políticas do StrictMode apenas em builds de debug do seu aplicativo.