Closed ming2d941 closed 8 years ago
哦,看了下是可以的,AbstractDraweeController的onDetach()方法:
@Override
public void onDetach() {
if (FLog.isLoggable(FLog.VERBOSE)) {
FLog.v(TAG, "controller %x %s: onDetach", System.identityHashCode(this), mId);
}
mEventTracker.recordEvent(Event.ON_DETACH_CONTROLLER);
mIsAttached = false;
mDeferredReleaser.scheduleDeferredRelease(this);
}
view被detach后会通过scheduleDeferredRelease来取消请求。
还有一处是在setController()提交请求时,会在调用到的setHierarchy()中取消请求:
public void setHierarchy(@Nullable DraweeHierarchy hierarchy) {
//省略部分代码
// force release in case request was submitted
if (mIsRequestSubmitted) {
mDeferredReleaser.cancelDeferredRelease(this);
release();
}
//省略部分代码
}
@ming2d941 是的,它会自动detach,但是有个地方需要注意,如果是ViewPager,左右滑出的DraweeView是不会被detach掉的
最近大体看了看fresco的实现,有很多地方不太清楚,比如对从缓存或者网络加载数据时的cancel机制比较疑惑。 拿界面上来说,比如有一个listview在不停的滚动,已经滚出屏幕外但是还没加载完,fresco能不能把这部分请求取消掉呢? 请教fresco能不能做到上面的功能,有没有cancel机制呢,是怎样的呢?还望指导... : )