/** * Clears any resources for loading frames that are currently held on to by this object. */ public void recycle() { isRecycled = true; state.frameLoader.clear(); }
@Test public void testRecycleCallsClearOnFrameManager() { drawable.recycle(); verify(frameLoader).clear(); }
@Test public void testClearsCompletedLoadOnFrameReadyIfCleared() { // Force the loader to create a real Handler by passing null; loader = createGifFrameLoader(null); loader.clear(); DelayTarget delayTarget = mock(DelayTarget.class); Request request = mock(Request.class); when(delayTarget.getRequest()).thenReturn(request); loader.onFrameReady(delayTarget); verify(requestManager).clear(eq(delayTarget)); }
@Test public void testDoesNotReturnResourceForCompletedFrameInGetCurrentFrameIfLoadCompletesWhileCleared() { loader.clear(); DelayTarget delayTarget = mock(DelayTarget.class); Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); when(delayTarget.getResource()).thenReturn(bitmap); loader.onFrameReady(delayTarget); assertNull(loader.getCurrentFrame()); }
@Test public void onFrameReady_whenNotRunning_clearsPendingFrameOnClear() { loader = createGifFrameLoader(/*handler=*/ null); DelayTarget loaded = mock(DelayTarget.class); when(loaded.getResource()).thenReturn(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888)); loader.onFrameReady(loaded); loader.unsubscribe(callback); DelayTarget nextFrame = mock(DelayTarget.class); when(nextFrame.getResource()) .thenReturn(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888)); loader.onFrameReady(nextFrame); loader.clear(); verify(requestManager).clear(loaded); verify(requestManager).clear(nextFrame); }
/** * Clears temporary data and resets the drawable back to the first frame. */ private void reset() { frameLoader.clear(); invalidateSelf(); }
/** * Clears any resources for loading frames that are currently held on to by this object. */ public void recycle() { isRecycled = true; state.bitmapPool.put(state.firstFrame); frameLoader.clear(); frameLoader.stop(); }