国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Glide的源碼分析(三)

econi / 1837人閱讀

Glide取消圖片加載
1.在任務剛開始時;
2.在EngineJob中,Future.cancel(true)
3.在加載完成,但沒有加載到控件;
RequestManager.java:

     public void pauseRequests() {
        Util.assertMainThread();
        requestTracker.pauseRequests();
    }

RequestTracker.java:

     public void pauseRequests() {
        isPaused = true;
        for (Request request : Util.getSnapshot(requests)) {
            if (request.isRunning()) {
                request.pause();
                pendingRequests.add(request);
            }
        }
    }

GenericRequest.java:

    @Override
    public void pause() {
        clear();
        status = Status.PAUSED;
    }

GenericRequest.LoadStatus.java:

    public void cancel() {
            engineJob.removeCallback(cb);
    }

EngineJob.java:

     public void removeCallback(ResourceCallback cb) {
        Util.assertMainThread();
        if (hasResource || hasException) {
            addIgnoredCallback(cb);
        } else {
            cbs.remove(cb);
            if (cbs.isEmpty()) {
                cancel();
            }
        }
    }
    void cancel() {
        if (hasException || hasResource || isCancelled) {
            return;
        }
        engineRunnable.cancel();
        Future currentFuture = future;
        if (currentFuture != null) {
            currentFuture.cancel(true);
        }
        isCancelled = true;
        listener.onEngineJobCancelled(this, key);
    }

EngineRunnable.java:

     public void cancel() {
        isCancelled = true;
        decodeJob.cancel();
    }

EngineRunnable.java:

    @Override
    public void run() {
        if (isCancelled) {
            return;
        }

        Exception exception = null;
        Resource resource = null;
        try {
            resource = decode();
        } catch (Exception e) {
            if (Log.isLoggable(TAG, Log.VERBOSE)) {
                Log.v(TAG, "Exception decoding", e);
            }
            exception = e;
        }

        if (isCancelled) {
            if (resource != null) {
                resource.recycle();
            }
            return;
        }

        if (resource == null) {
            onLoadFailed(exception);
        } else {
            onLoadComplete(resource);
        }
    }

EngineJob.java:

    private volatile Future future;
    void cancel() {
        if (hasException || hasResource || isCancelled) {
            return;
        }
        engineRunnable.cancel();
        Future currentFuture = future;
        if (currentFuture != null) {
            currentFuture.cancel(true);
        }
        isCancelled = true;
        listener.onEngineJobCancelled(this, key);
    }
    public void start(EngineRunnable engineRunnable) {
        this.engineRunnable = engineRunnable;
        future = diskCacheService.submit(engineRunnable);
    }

    @Override
    public void submitForSource(EngineRunnable runnable) {
        future = sourceService.submit(runnable);
    }

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70704.html

相關文章

  • Glide源碼分析

    摘要:版本問題如何實現與生命周期的綁定如何實現緩存如何實現圖片壓縮如何實現與生命周期的綁定創建將其與傳入的生命周期綁定這樣做的好處是當時,也會做相應操作,如停掉圖片加載綁定首先無論傳入的是什么,只要是在子線程中調用創建的與綁定,這樣創建的的生命周 版本4.9.0 問題 Glide如何實現與生命周期的綁定? Glide如何實現緩存? Glide如何實現圖片壓縮? Glide如何實現與生命周...

    youkede 評論0 收藏0
  • Glide源碼分析(一) Activity生命周期與圖片加載關系

    摘要:從這段代碼入手分析分析從這段代碼可以看出無論傳入的是還是或者干脆傳入或都會調用這個方法而這個方法生成兩個對象對象,并把它加到上對象這兩個對象擁有共同的對象對象,當系統調用的生命周期,的生命周期隨之被調用來處理列表,將的生命周期與的生命周期聯 從這段代碼入手分析Glide Glide.with(context) .load(url) .placehol...

    Kosmos 評論0 收藏0

發表評論

0條評論

econi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<