StrictModeViolation при вызове AccountManager.getAccountsByType() из AsyncTask.doInBackground()
Я вызываю AccountManager.getAccountsByType() в методе AsyncTask.doInBackground(). Но это вызывает эту StrictModeViolation по крайней мере иногда:
android.os.StrictMode$StrictModeViolation: policy=95 violation=2
at android.os.StrictMode.executeDeathPenalty(StrictMode.java:1379)
at android.os.StrictMode.access$1300(StrictMode.java:118)
at android.os.StrictMode$AndroidBlockGuardPolicy.handleViolation(StrictMode.java:1372)
at android.os.StrictMode$AndroidBlockGuardPolicy$1.run(StrictMode.java:1254)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Но, конечно же, AsyncTask.doInBackground() именно там, где должно быть нормально вызывать методы AccountManager?
Вот как я включаю StrictMode:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build());
Кстати, я знаю, что в документации по AccountManager сказано, что "этот метод можно вызывать из основного потока" во многих методах, но очевидно, что это неправильно, и я уже избежал нескольких других StrictModeViolations, переместив использование AccountManager. в AsyncTasks.