Android ImageView PostInvalidate не работает все время

Я расширил ImageView в Android, где я загружаю изображение, и когда изображение прибывает, я лишаю законной силы представление, чтобы получить перерисовку. Если я использую кеширование, оно не работает постоянно, поэтому я подозреваю, что android игнорирует некоторые недействительные команды, если система только что уже перерисовала. Без кеша он работает медленнее, а рисование работает быстрее, с кешем - быстрее, и время от времени перерисовываются не все изображения. (в потоке я получаю первый вызов onDraw с помощью инфраструктуры, и когда мое изображение готово, я вызываю postInvalidate и получаю второй onDraw, где я рисую растровое изображение на холсте)

@Override
    public void onLoadImage(Bitmap image, State state) {

        _image = image;
        postInvalidate();


    }

 @Override
    protected void onDraw(Canvas canvas) {


        if (_image == null) {
            super.onDraw(canvas);
        } else {

            Rect destination = new Rect(0, 0, canvas.getWidth(), canvas.getHeight());

            canvas.drawBitmap(_image, null, destination, _paint);
        }

    }

okHttpClient настроен следующим образом (ниже), onLoadImage происходит в обратном вызове onResponse из сетевой библиотеки, поэтому не в потоке пользовательского интерфейса, поэтому я использую postInvalidate вместо Invalidate

private static volatile OkHttpClient _httpClient = null;

    public static OkHttpClient getHttpClient() {

        if(_httpClient == null)
        {
            synchronized (Factory.class) {
                if (_httpClient == null) _httpClient = new OkHttpClient.Builder().retryOnConnectionFailure(true).cache(getHttpCache()).build();
            }
        }
        return _httpClient;
    }

Андроид игнорирует Invalidate в некоторых случаях? Любая помощь приветствуется! Спасибо

0 ответов

Другие вопросы по тегам