Я видел твой пост в блоге. Поскольку вы когда-либо хотите устанавливать StrictMode не более одного раза для каждого файла Java, имеет ли смысл упростить код для вызова установки следующим образом?
Вот альтернативный StrictModeWrapper:
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.os.StrictMode;
public class StrictModeWrapper {
public static void init(Context context) {
// check if android:debuggable is set to true
int applicationFlags = context.getApplicationInfo().flags;
if ((applicationFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
}
}
Из вашего кода вам нужно всего лишь сделать следующее:
try {
StrictModeWrapper.init(this);
}
catch(Throwable throwable) {
Log.v("StrictMode", "... is not available. Punting...");
}
, где , это - локальный контекст, такой как ваша активность или приложение или что-то еще. Похоже, что это работает для Android до 2.3, а также дает вам возможность использовать другие методы классов Builder для точной настройки StrictMode.