Вопрос

Моя проблема:

12-18 17: 05: 03.336: Debug/StrictMode (2112): нарушение политики строгого кодея; ~ Продолжительность = 2073 мс: Android.os.StrictMode $ strictmodediskReadViolation: политика = 23 нарушение = 2

Из фабричного метода

12-18 17: 05: 03.336: Debug/StrictMode (2112): at android.graphics.bitmapfactory.decodefile (bitmapfactory.java:299)

Тогда в моем коде

12-18 17: 05: 03.336: Debug/StrictMode (2112): at blah.imageCache.getFromCache (ImageCache.java:248)

12-18 17: 05: 03.336: Debug/StrictMode (2112):
в Blah2 $ LoaderThread $ 1HandleMessage (Blah.java:63)

Важный SNIP-IT

Class LoaderThread Extends HandlerThread {

общественный обработчик Мандлер;

public LoaderThread (String name) {super (name); }

@Override public void onlooperPrepareD () {mhandler = new Handler () {public void handlemessage (сообщение msg) {bitmap bit = imageecache.getinstance (). GetFromCache ((String) msg.obj, imageCache.USE_DISK); }}; }}

Метод GetFromCache в вызовах класса ImageCache

bitmap = BitmapFactory.decodeFile(fLoc);

Который, кажется, работает в потоке пользовательского интерфейса, но это не имеет смысла для меня. Разве это не должно быть вызвано в фоновую ветку? Это была цель использования HasterlerThread после всего...

Класс LoadThread создается в моем Oncreate (пакет), как это

LoaderThread Loader = new LoaderThread ("ImgLoader")

Loader.Start ();

и сообщения передаются из потока пользовательского интерфейса через обработчик

Loader.mhandler.dispatchMessage (Loader.mhandler.obtainmessage (args ..));

Мне интересно, связано ли это с методом GetInstance, который статичен

Публичный статический синхронизированный ImageCache GetInstance () {

if (_instance == null) {_instance = new ImageCache (); } return _instance; }

Это было полезно?

Решение

Теперь я чувствую себя задницей, но я называл не тот метод на своем обработчике ...

неправильный путь

loader.mHandler.dispatchMessage(loader.mHandler.obtainMessage(args..));

правильный путь

loader.mHandler.sendMessage(loader.mHandler.obtainMessage(args..));

Так что каким -то образом сообщения до сих пор проходили через обработчик, только на потоке пользовательского интерфейса вместо фонового.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top