private void startImageLoaderTask ( final ImageConsumer consumer , final ImageRequest request ) { final String key = request . getKey ( ) ; if ( debug ) { Log . d ( TAG , "Key " + key ) ; } ImageLoader loader = currentLoads . get ( key ) ; if ( loader != null ) { final boolean added = loader . addTarget ( consumer ) ; if ( ! added ) { loader = null ; } } if ( loader == null ) { if ( debug ) { Log . d ( TAG , "Start a new task" ) ; } loader = new ImageLoader ( request , this ) ; if ( ! loader . addTarget ( consumer ) ) { throw new IllegalStateException ( "Cannot add target to the new loader" ) ; } currentLoads . put ( key , loader ) ; if ( debug ) { Log . d ( TAG , "Current loaders count: " + currentLoads . size ( ) ) ; } final Executor executor = getImageTaskExecutor ( ) ; executor . execute ( loader . future ) ; } else if ( debug ) { Log . d ( TAG , "Joined to the existing task " + key ) ; } }
Executed in the main thread .