@NonNull @Override public RequestManager build(@NonNull Glide glide, @NonNull Lifecycle lifecycle, @NonNull RequestManagerTreeNode requestManagerTreeNode, @NonNull Context context) { return new RequestManager(glide, lifecycle, requestManagerTreeNode, context); } };
@Test public void clear_withRequestStartedInChildManager_doesNotThrow() { final RequestManager child = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.emptySet(); } }, context); RequestManager parent = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.singleton(child); } }, context); File file = new File("fake"); child.load(file).into(target); parent.clear(target); }
@Test public void clear_withRequestStartedInParentManager_doesNotThrow() { final RequestManager child = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.emptySet(); } }, context); RequestManager parent = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.singleton(child); } }, context); File file = new File("fake"); parent.load(file).into(target); child.clear(target); } }
@Test public void clear_withRequestStartedInSiblingManager_doesNotThrow() { final RequestManager child1 = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.emptySet(); } }, context); final RequestManager child2 = new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return Collections.emptySet(); } }, context); new RequestManager(Glide.get(context), lifecycle, new RequestManagerTreeNode() { @NonNull @Override public Set<RequestManager> getDescendants() { return new HashSet<>(java.util.Arrays.asList(child1, child2)); } }, context); File file = new File("fake"); child1.load(file).into(target); child2.clear(target); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); context = InstrumentationRegistry.getTargetContext(); Glide glide = Glide.get(context); requestManager = new RequestManager(glide, new Lifecycle() { @Override public void addListener(@NonNull LifecycleListener listener) { listener.onStart(); } @Override public void removeListener(@NonNull LifecycleListener listener) { // Do nothing. } }, treeNode, context); }
new RequestManager( Glide.get(RuntimeEnvironment.application), lifecycle,
requestManager = new RequestManager(Glide.get(context), lifecycle, treeNode, context); requestManager.resumeRequests();
private RequestManager getApplicationManager(Context context) { // Either an application context or we're on a background thread. if (applicationManager == null) { synchronized (this) { if (applicationManager == null) { // Normally pause/resume is taken care of by the fragment we add to the fragment or activity. // However, in this case since the manager attached to the application will not receive lifecycle // events, we must force the manager to start resumed using ApplicationLifecycle. applicationManager = new RequestManager(context.getApplicationContext(), new ApplicationLifecycle(), new EmptyRequestManagerTreeNode()); } } } return applicationManager; }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) RequestManager fragmentGet(Context context, android.app.FragmentManager fm) { RequestManagerFragment current = getRequestManagerFragment(fm); RequestManager requestManager = current.getRequestManager(); if (requestManager == null) { requestManager = new RequestManager(context, current.getLifecycle(), current.getRequestManagerTreeNode()); current.setRequestManager(requestManager); } return requestManager; }
RequestManager supportFragmentGet(Context context, FragmentManager fm) { SupportRequestManagerFragment current = getSupportRequestManagerFragment(fm); RequestManager requestManager = current.getRequestManager(); if (requestManager == null) { requestManager = new RequestManager(context, current.getLifeCycle(), current.getRequestManagerTreeNode()); current.setRequestManager(requestManager); } return requestManager; }
@Override public RequestManager build(Glide glide, Lifecycle lifecycle, RequestManagerTreeNode requestManagerTreeNode) { return new RequestManager(glide, lifecycle, requestManagerTreeNode); } };