@@ -236,28 +236,31 @@ export class ImagePipeline {
236236 const context = Utils . android . getApplicationContext ( ) ;
237237 const requestManager = com . bumptech . glide . Glide . with ( context ) ;
238238 const requestBuilder = requestManager . asBitmap ( ) . load ( uri ) ;
239- function clear ( ) {
239+
240+ let futureTarget = null ;
241+ function clearLater ( ) {
240242 if ( futureTarget ) {
241- com . bumptech . glide . Glide . with ( context ) . clear ( futureTarget ) ;
243+ setTimeout ( ( ) => {
244+ com . bumptech . glide . Glide . with ( context ) . clear ( futureTarget ) ;
245+ } , 0 ) ;
242246 }
243247 }
244- // Build request listener that resolves the promise when resource is ready
248+
245249 const listener = new com . bumptech . glide . request . RequestListener ( {
246250 onLoadFailed ( e : any , model : any , target : any , isFirstResource : boolean ) : boolean {
247- clear ( ) ;
251+ clearLater ( ) ;
248252 reject ( e ) ;
249253 return true ; // consumed
250254 } ,
251255 onResourceReady ( resource : any , model : any , target : any , dataSource : any , isFirstResource : boolean ) : boolean {
252- clear ( ) ;
253-
256+ clearLater ( ) ;
254257 resolve ( ) ;
255258 return true ; // consumed
256259 }
257260 } ) ;
258261
259262 // Kick the request off and keep a reference to the FutureTarget so it can be cleared.
260- const futureTarget = requestBuilder . listener ( listener ) . preload ( ) ;
263+ futureTarget = requestBuilder . listener ( listener ) . preload ( ) ;
261264 } catch ( error ) {
262265 reject ( error ) ;
263266 }
@@ -270,26 +273,34 @@ export class ImagePipeline {
270273 const context = Utils . android . getApplicationContext ( ) ;
271274 const requestManager = com . bumptech . glide . Glide . with ( context ) ;
272275 const requestBuilder = toDiskCache ? requestManager . downloadOnly ( ) . load ( uri ) : requestManager . asBitmap ( ) . load ( uri ) ;
273- function clear ( ) {
276+
277+ let futureTarget = null ;
278+ function clearLater ( ) {
274279 if ( futureTarget ) {
275- com . bumptech . glide . Glide . with ( context ) . clear ( futureTarget ) ;
280+ setTimeout ( ( ) => {
281+ try {
282+ com . bumptech . glide . Glide . with ( context ) . clear ( futureTarget ) ;
283+ } catch ( err ) {
284+ // ignore
285+ }
286+ } , 0 ) ;
276287 }
277288 }
278289
279290 const listener = new com . bumptech . glide . request . RequestListener ( {
280291 onLoadFailed ( e : any , model : any , target : any , isFirstResource : boolean ) : boolean {
281- clear ( ) ;
292+ clearLater ( ) ;
282293 reject ( e ) ;
283294 return true ;
284295 } ,
285296 onResourceReady ( resource : any , model : any , target : any , dataSource : any , isFirstResource : boolean ) : boolean {
286- clear ( ) ;
297+ clearLater ( ) ;
287298 resolve ( ) ;
288299 return true ;
289300 }
290301 } ) ;
291302
292- const futureTarget = requestBuilder . listener ( listener ) . preload ( ) ;
303+ futureTarget = requestBuilder . listener ( listener ) . preload ( ) ;
293304 } catch ( error ) {
294305 reject ( error ) ;
295306 }
0 commit comments