Glide Versions Save

An image loading and caching library for Android focused on smooth scrolling

v4.13.0

2 years ago

Features

  • Add an integration library to support decoding AVIF (3fd8e777e2be6a3fedc5f5c5f688970a212a285f, f5e78ed03c99a9804285360b36b04d3089c80cff, 2b52437cd52bbacf0376d84aa2eec5b63ba53ac4)

Bugs

Deprecations

Behavior Changes

Breaking Changes

Build Changes

v4.12.0

3 years ago

Features

  • Add a Cronet integration library (ba995829f495379df82653bc07542006c15f4cb9, ff2984963cbf0f31e374228c7f702f27b5753336, 114251e6ce43fb67ca1528a0f24dc3c7e73eb0bf, 1dd0576f8d133e26a525a746b2454d1ee5c74762, 3d54ef50ea4fa41694695971b7d858435c784057)
  • Add support for width/height to the SvgDecoder in the sample app (@chggr, 5a814a1ca472c6a174cefec7c2cb60a66a53321c)
  • Add a thumbnail method that takes a list of RequestBuilders so that you don't have to nest a long series of requests (67b01f62c0e98bb4f517708128be3107b22367cb)
  • Add a .error() method that takes a model to more easily start a fallback request. There's a bit of nuance with how this is treated, so if you use it, please read the javadoc carefully (d1aacb5e116a94f70b7f5e4531ece93ab08a4cd4, e442557fc5ff640e9988c850bfe4d7be73c09b18)

Bugs

  • Hardcode disallowed device models for hardware Bitmaps (0647c410a0a6dc918f56ff3a4105557dc5313477, 90a657b6591fb97fc47a8444ab778a348cef0fcb, ddb3934a3d1f43dd184b3b9534a8e621fabff713)
  • Fix flickr sample by allowing non-https urls (@landicefu, b2a361a8faf3ba56d433bb476b892672911dfaa2)
  • Fix a verificatio nerror in ParcelFileDescriptorRewinder on API levels < 21 (@mkj-gram , 5b117b315a3bd90ae96d7eda61badb94e78c3613)
  • Fix never returning larger size keys in Flickr sample (@valentinilk, 78ecfd2212015d0ad650562652dfe44b76409789)
  • Fix bugs caused by items changing sizes while in Glide's LruCache (5090b6d004fabbc0ae50e0295fd50e2f13cb6357)
  • Fix annotation processor with more than 5 library modules on some platforms (#4106, 7cc865ac1a0141707aa3318bcd9b0250594d7464)
  • Fix ConcurrentModificationException due to race in Glide's trimMemory method (#4162, cce9375713d989cdd0958890b277150e61374135)
  • Note that RequestListener.onLoadFailed's model is Nullable (@opayen, 621e2d5ba6ee563f396c0b46521b3ce22fd8d226)
  • Fix an IllegalArgumentException in GifFrameLoader if the GIF is started before it's visible (@dalinaum, 1ae9a2af4e52afbeb4a9927fb535481cf39d7c21)
  • Avoid adding both support and non-support RequestManagers when Glide is used with a FragmentActivity as both a FragmentActivity and a regular Activity (8f354dc527b46a69a47713e6e625cee2750eb6a0)
  • Avoid a memory leak when starting RequestManagers in some cases (14a0e1acd07d76bc161de6d211f9cd7484918f61)
  • Workaround a JDK bug triggered sometimes by Registry (6aa7ad274ac6ec586997efcf0d51dd2091e8fadc)
  • Progress on some workarounds to avoid obscure Hardware Bitmap issues on versions of Android< P (edd96d80024a6a3cf2f6966664ff8543006967bb, 8584b450f3af6c18e0393a3bff015a62a08d5eb5, a3a3a6573addd83a5be031bbd55d29e7514ca446, b0a7efecf54723506bcaac2d801e29845f04f229, 7d7042c4f14d0f825f49183cd840ea22525bdf14, b451065702ff452349f3f08deb2f937fb3a83ab5)
  • Avoid claiming annotations in Glide's processor (@cushon, e9e5a2e0948ef1a8152953fc3f4de58f979b23b2)
  • Fix issues with clone/autoclone in RequestBuilder (332807aed4641967ef47cf3a1a61e57b0689aa17, 11530fd76903ea4c6b63d5b0697b42af6393476b)
  • Fix a bug where we could decode partial images for large PNG files where obtaining the metadata caused us to skip past the limit of our buffer (danfang@, 2b61482baa90175e0efdf4ec90f06a5051e1b370)
  • Make sure to rethrow in our exception handling streams to workaround an infinite loop in ExifInterface (59ec98c505c17b3efa882522c3312022d1ca88da)
  • Reduce the number of stat() syscalls in Glide's startup (5acc99f8fc7e772aeef8aa959ff2a9c203ab1aa6)

Deprecations

Behavior Changes

  • Better http status codes in HttpUrlFetcher failures (efe8023aed474e4bf1a596faf15ca1e4c5f9e34f)

Breaking Changes

Build Changes

  • Add a Gradle Wrapper Validation Github Action (@JLLeitschuh, d75bb3070797daaeae95be90af1e8c72084cdb1a)
  • Removed Monkeyrunner (5aa0b4f8e9d4c5b468b39db33c7e6eb213765206)
  • Update ExifInterface version to 1.2.0 (85868bdb31b393e85c8c97c1465f13d47872d7ab)
  • Switch from travis-ci to Github actions for presubmits (dbdb62c4cb1ee4c0448c64e10398435553351d1a)

v4.11.0

4 years ago

Features

  • Add a thread timeout for Glide's threads to reduce memory when Glide is infrequently used in an application (db3acef)
  • Add getters to Bitmap Pool for cache statistics (1382e56, thanks to vtsuei@)
  • Add methods to concurrent integration libraries that allow releasing resources back to Glide's pool (277765705)
  • Allow decoding videos from ByteBuffers so that remote videos can be decoded when using a disk cache strategy other than the default (9190698, #4021)

Bugs

  • Improve ModelLoader error text (83ba102)
  • Fix errors with thumbnail loaders that could cause flashing to placeholders (690f815)
  • Fix an exception using Arrays.addAll on some devices/versions of Android (42d3f07)
  • Work around framework bug that breaks heic/heif decoding on Android Q for applications that opt in to legacy storage or request ACCESS_MEDIA_LOCATION (1c51b24)
  • Improve hardware bitmap use on P+ where more file descriptors are available (e8c841c)
  • Avoid removing caller added listeners in GlideFutures (0acd87c)
  • Avoid propagating unexpected callbacks from cancelled or failed model loaders (7e750ca)
  • Switch to the support exif library to avoid spurious logs (bd6f894, #3851)
  • Fix deadlock when recursively clearing resources, typically GIFs (100ac4a)

Deprecations

Behavior Changes

  • Allow decoding files via FileDescriptors when all other types fail so that files with headers exceeding the buffer size can be decoded (typically DNGs with metadata at the end of the file (9281d8e, thanks to timurrrr@)

Breaking Changes

Build Changes

v4.10.0

4 years ago

Features

  • Added a Mocks library to mock GlideExecutor in unit/emulator tests (e021f6bf83c909a7511c8182cce0af9c58912834)
  • Added an integration library to integrate with Guava's ListenableFuture class (9fb1036645ec4e7cb159e7ca215f85375d8e4f67)
  • Add granular options for rounded corners (f36a9fa9182227d7cebb3b5eaa6cc26e7d26aea5, thanks to dlos@)
  • Include day/night mode in resource id cache keys (1b391c42f22e967c070a6a105b1e37730ab6ea6e)
  • Add an API that can be called on Glide manually to clear memory, especially when apps are backgrounded (8a094e972e686ddd1223371c268f0a4758e0b1ef, thanks to mikewallstedt@)
  • Add simple support for wide gamut color spaces (15a21b125d0d131df7bc405a947e69b4d40709ae, 7910f68b31c5f3fb465a2834b6b579464ef0f1c6)
  • Release more memory in the background on M+ (525e7ba82ec883fb518087879269836f888bd584)
  • Support Fragments not hosted by Acitivities (71359c7e385dc7d287f0da5d9e6d533ca41c76e4, thanks to Daniel Tomasiewicz)
  • Handle contexts with null application contexts (31b501d1955a7bbc1d3a6ed92307a2aa8c43e392, thanks to Daniel Tomasiewicz)

Bugs

  • Fixed incorrect downsampling for rotated images when using Target.SIZE_ORIGINAL (79dac0d1f522cab3d254f0fb91264e06e09568c6, thanks to sonyamollinger@)
  • Fixed returning negative byte values converting ByteBuffers to InputStreams (24f9c28eadc0a54d034bd0b75b4b3d7809f3c3b6, thanks to sonyamollinger@)
  • Make sure to cancel all preload requests in cancelAll() (047c22d77ebb497db29cf329c2388274ee413f20, thanks @paynemiller92)
  • Fixed a series of concurrency bugs introduced by allowing requests to start on background threads (bee634818cff229570d0fd392130cd76ea2c3639, 5cccdfba8bbced57669629f93c92a59eb0439382, 01ea6a544d6159ed986e4f8628a4d962a7aa520d, b2a46ef7a385abd5df38ee11b8be85868768739e, 6dc03d84d5a009e6a4535381f5b3ec8aeced2912, 4de2cda0a2a5ed08273b11b8796c2c2d1327e788, b96b00096607cee23763e4dd049a297d85b89911, 890712279a997ded1b22d64ea6059c911b2f8a55, 53438b90f982d27652c2bae7cd9daf9be8d5a03a)
  • Make sure the specified numbers of threads are actually used in the animation executor (#3575, ac4aa53c6b8e4f7fa4b014ee84b858610106ec4e, thanks to @yuriy-budiyev)
  • Avoid blinking when calling RequestManager#pause when the thumbnail portion of a request is complete the full portion is still running (2f561534cd49171d0e372f1c613d1aa4ddcae36d)
  • Make it less likely to mix support and non-support fragments (219330630652a6d9bd088c0a7e971cf796872de1, thanks to @limuyang2)
  • Avoid downsampling incorrectly in FitCenter and CenterInside when there was an exact power of 2 match in one dimension but not the other (3df54453089c5ec02af552c713d5907985aee12a)
  • Always use orientation corrected sizes in Downsampler (#3673, ebdf8beb59df8d62c0a978ad967098dae8f666cf)
  • Fix transparency in GifDecoder when using RGB_565 (29c553df470401211dd080c2b3c8b69916e7ea25, thanks to @lihongyu)
  • Handle security exceptions trying to open MediaStore Uris when applications are given access to a MediaStore Uri via an Intent (#3504, 9c48b48eb17d8d1c005352730d66d0dc85da5efe)
  • Fix an unused AnimationExecutor (7bb6f11c43c245a4e150d93d293a40c75fe99796, thanks to @phxnirvana)

Deprecations

  • Deprecate method to set custom tags in CustomViewTarget (c8d646ebf857a676a6b682b5e78d382c52b8c5ab)

Behavior Changes

  • Custom tags in CustomViewTarget are now ignored because they cause Glide to ignore calls to clear() (c8d646ebf857a676a6b682b5e78d382c52b8c5ab)

Breaking Changes

Build Changes

  • Updated target SDK to 28 (#3880, thanks to @prempalsingh)
  • Disable BuildConfig generation (4039981e719071473fa66515027188bdb71313ad, thanks to @technoir42)
  • Update Truth (5bb469166d49ddb49d7e164fded2b58b48d45916, cd37a54f076392402af6df7b80bda07d96e012c7, thanks to @cpovirk)
  • Migrated Glide to androidx (d8278f43a94484f20822170b71ac7b66269a2aa6)
  • Update OkHttp to 3.12.1 (f3fafcd3cb93e384263434b19e72ad926c249188)

v4.9.0

5 years ago

Features

  • Allow applying RequestOptions directly in a RequestBuilder without the generated API (ed20643)

For example previously to apply centerCrop you'd have use a static method and apply():

Glide.with(fragment)
   .load(url)
   .apply(centerCropTransform())
   .into(imageView);

Or use the generated API and the annotation processor:

GlideApp.with(fragment)
   .load(url)
  .centerCrop()
  .into(imageView);

After this change, even without the generated API/annotation processor you can access standard RequestOptions methods directly:

Glide.with(fragment)
  .load(url)
  .centerCrop()
  .into(imageView);

The generated API is still required for API extensions and to include integration libraries. Hopefully this makes it easier for users who do not include integration libraries and for developers of libraries that are currently unable to use the generated API to use Glide.

  • Add Global/Activity/Fragment scoped RequestListeners (37127f0)
  • Add a CustomTarget class to make it easier to reduce some non-essential boilerplate when implementing custom Targets. onLoadCleared still must be implemented by subclasses of CustomTarget (b3b2d7a)
  • Support loading resources from dynamic modules (#3308, b57ef34, thanks to @SUPERCILEX)
  • Add a varargs .transform() method to replace the equivalent .transforms() method (#2875, #3365, 8a26a6b8d93cc629d423a316b1838b841e672099, thanks to @aleien)
  • Make proguard rules consumable by users of the library (f7d8604, thanks to @rehlma)
  • Stop forcing all requests to be posted to the main thread to avoid unnecessary UI thread work and avoid delays caused by UI thread processing time for images loaded on background threads (8f1ea5c)
  • Add Animatable2Compat callbacks to GifDrawable so that users can be notified when a GIF animation with a non infinite loop count finishes (#3438, a150301, thanks to @AnwarShahriar)

Bugs

  • Fixed an issue where different types of requested resources (Bitmap vs Drawable etc) could share a cache key (cad83d2)
  • Work around an odd compiler bug creating new ArrayLists from other collections on some devices/versions of Android (#3296, 2ca790a)
  • Add Nullable/NonNull annotations to LazyHeaders.Builder (#3446, d6345fbbf19f9eb8434587f76a5c38e2232149cf, thanks to @r-ralph)
  • Add a transformation to rotate images (other than from EXIF) (1878585429e0579bfd1c2ca8af12a831fb23903d, thanks to @Gnzlt)
  • Fix a race that could lead to doing useless work in MultiModelLoader after cancellation (3c9f92f)
  • Fix a bug in SizeConfigStrategy that could lead to a returned Bitmap having an incorrect config (be51b4e)
  • Avoid classifying all images with non-0 exif orientations as having transparency to allow them to be cached as JPEGs instead of PNGs (e515f47)
  • Add a debug API that allows apps to attach a stack trace showing where a Glide request originated from. Note that this is fairly expensive and isn't meant to be used in production (114b885)
  • Fix bugs handling resource Uris that point to resources in other applications (e2df4d068840ea04b9e448347f062b964eb0b0b7)

Deprecations

  • Deprecated .transforms(), it's replaced with the identical .transform() method (8a26a6b8d93cc629d423a316b1838b841e672099)

Behavior Changes

  • RequestListeners for requests started on background threads can now be called on a background thread (8f1ea5c)

Breaking Changes

  • Subclasses of RequestBuilder/RequestOptions may be broken by ed20643. Typically the breakage is relatively simple to fix, but the exact methods that need to be called or that are exposed may have changed for subclasses.

Build Changes

  • Add support for incremental annotation processing (#3508, a16a1baa140c9b87b9a68a2a3b91047fd60ba5d8, thanks to @technoir42)

v4.8.0

5 years ago

Features

  • Multiple RequestListeners can be added to a single request (93289994a4ba59c6251aad0ccdf332c0d758d9c7, thanks to Adrian)
  • Added a safer version of Glide's base target methods that force callers to implement onLoadCleared and deprecated the unsafe versions. Failing to implement onLoadCleared in a Target can lead to UIs displaying incorrect images, runtime exceptions, or various other resource re-use errors (3a7060777d17fa4d9ca2b68b019fd2d448f54ea6, thanks to azlatin@).

Bugs

  • HEIF orientation is supported on O MR1 and higher via ExifInterface (a3f8114d015be983d365410fa0655de95fb80fef)
  • Improved error message for network failures (#2894, ff463d779ef8bccffc224e3647dbaf6dbc27fd57)
  • Placeholder/error/fallback drawable and id variants now replace previous calls to the same method with the other variant. For example, placeholder(Drawable) will replace previous calls to .placeholder(R.id.xyz)(2dccb5c2fb265cbfa67b328cea30e922c67feb9e)
  • Improved synchronization in ModelLoaderRegistry (62e6c11e6e4e4d0cf5f4c380219fe10129bb2694, thanks to @jnlopar)

Deprecations

  • Deprecated SimpleTarget and ViewTarget, see the CustomViewTarget description in Features in these release notes for more detail.

Behavior Changes

  • Requests that are started with a paused RequestManager, usually in a paused Activity or Fragment, are immediately paused so that they display a placeholder instead of nothing (a55e935eba859b9ea4f6e4357b8ac4e7e4a8327f)

Breaking Changes

  • The deprecated PREFER_ARGB_8888_DISALLOW_HARDWARE DecodeFormat has been removed. Use RequestOptions#disallowHardwareConfig() instead (7eb59f7f217adc7b0e017d586ea0814bf75c53d0)
  • Remove pause() and isPaused() from the internal Request interface (9089752d2a4f4ccd6e7a6a7bbf7ea85db3f0949b)
  • Glide now uses resource ids (in CustomViewTarget) and therefore can no longer be released as a straight jar.

Build Changes

  • Added support for androidx annotations (c3328fe63214c0aedefca3d5496bb222a2fd29ef, thanks to @colinrtwhite)
  • Updated to Android Gradle 3.1.3.

v4.7.0

6 years ago

Features

  • Added support for data Uris when they're provided as Uris (17c1c3d5781e953379904a60bae08524632e5053)
  • Improved scrolling performance by optimizing some Glide internal calls (7664c826ef2a55c67a4b55fbe61e33203355f2ee, d7635bda9105dbeb27ed8a3fbda69832396960f5, 7ff3bdeed52d6047e8e9f879ccb3f67afe50fa2d, thanks to paulsowden@)
  • Added support for downsampling in VideoBitmapDecoder (97d130d338349220cc8158141bbae1dfda496efe)
  • Provide better default names for annotation generated classes (58bcf53681e8944add93c8680578fa7fdd617785, thanks to @SUPERCILEX)

Bugs

  • Improved handling of cancellation in VolleyStreamFetcher (a690f38859ebf5f4f06172060596842a35cc16d8)
  • Improved handling of TRIM_MEMORY_RUNNING_CRITICAL (d939314e04b26709e7e890ba8f88494551111e23, thanks to @ygnessin)
  • Avoid delaying the first few requests started in Fragments or Activities by defaulting RequestManagers to started when the containing Activity or Fragment is started (7d1898e92600a6a2698d72e12ec26c6715fb8fc5)
  • Fixed failures in annotation processor for classes with _ in the package name (99723e3e7e14eecd908685da630d522e0e304b40, thanks to @TWiStErRob)
  • Obey themes when retrieving drawables when the appcompat support library is present (5212e953ff8fb0db390214eafb5a89b826884142, thanks to @julianostarek)
  • Fixed a bug that could cause loading another application's launcher icon to fail if the calling application's support library version didn't match exactly (f508d7cce947a8075806e088e798cfb6593647b0)
  • Fixed a bug where a pixel was swapped in the output of GifDecoder (7fb8b1258a3aabbedad3b8d15f59c8091498160a, thanks to @mtopolnik)

Behavior Changes

  • VideoBitmapDecoder will now obey DownsampleStrategy (97d130d338349220cc8158141bbae1dfda496efe)
  • Preload ahead the first page when using the RecyclerView or ListView preloader before the user scrolls for the first time (dd7fe186e0eb4ea2b17f8611317a2714b81ff03b, thanks to Anton111111)

Breaking Changes

  • Made GlideBuilder.build package private (914060e00a9a766017560276a2dd9a42dc9b2874)
  • Deprecated non-support fragments (29d481ccdc8a0f0d7135359d970de071f73b6922, thanks to @jaredsburrows)
  • Removed deprecated constructors in transformation implementations (05e3215ceca003ee295ed373f86e17caa3568c10, b68ba436aa8d022fdf906c010fabb0d690f3d18a, 2d0bc2de5c86d7f56ca77748733511669f80d32a)
  • Removed ComponentsCallbacks from RequestManager (1937b055db40557206cb7ea8499c37e43d9ec22f)

Build Changes

  • Updated to Gradle 4.6 (3a7e262fe4c530a86c8064fb5d22a4fb0cc73e84, 86f327664c456360dc1d3f403e88c62059561969, thanks to @jaredsburrows)
  • Improved NonNull checks for Kotlin (a1f5f1008d4e9588ad37acd731d73bd63903440c, thanks fo @mariotaku)

v4.6.1

6 years ago

This is a bugfix release of Glide 4.6.0

Bugs

Fixes an issue where pom files in the 4.6.0 release did not list the appropriate dependencies for Glide's various components (#2863)

v4.6.0

6 years ago

This is the January release of Glide.

Features

  • Use buffered streams when writing Bitmap data (860f7d041dd00e6032d71ff8483ac2a9d30441ec)
  • Allow re-using ARGB_8888 and RGBA_F16 Bitmaps via re-configuration (2cd953c63cf266bae37293ce536de4fb04b8e7e0, 17e0943fdc9e24ce4f105df53e91c7cdea60edf6)

Bugs

  • Return the correct size of RGBA_F16 Bitmaps in Util.getBitmapByteSize to avoid obtaining incorrectly sized Bitmaps for re-use in Downsampler (a198ef627d3537d460d2eb5d64d15de1803f0f6c)
  • Avoid converting RGBA_F16 Bitmaps to ARGB_8888 when running transformations that add transparent pixels (73277df1debcf894aece03f0d1b2852281c266a5)
  • Avoid an exception when loading remote images that aren't yet in the cache as Files with DiskCacheStrategy.AUTOMATIC (0917ef365ea35ca3e0f1eb12a2b7c843c84042f3, #2824)
  • Avoid inefficiently trying identical parts of load paths multiple times (9d3a6ff872c0c0d753fd8f37ba0a80d487277d76, thanks to paulsowden@)

Behavior Changes

  • Wide gamut PNGs that were decoded as RGBA_F16 even when BitmapFactory’s inConfig was set to ARGB_8888 may be affected by improved handling of RGBA_F16 when decoding and transforming images. If you see any issues decoding or transforming PNGs on Android O or higher, please file an issue so we can investigate.

Breaking Changes

  • Added correct Nullable annotations to all generated classes (35f6a0a43bf8ac645c8c5d0cb82f2936f172f7f9, thanks to @SUPERCILEX)
  • Added correct Nullable annotations to RequestManager and other manager classes (bfa237c19a7d742a4911e2744d174ae82f420ac0, thanks to @SUPERCILEX)
  • Add Nullable annotations to the load package (e9f682f9586a68f9322d978dda4856957167ff0b, thanks to @SUPERCILEX)

Build Changes

  • Cut build times for Glide by around a factor of two by parallelizing static analysis and unit test tasks on the main library package and removing the redundant release variants across all modules (3968ccbc8815409165cec630f28bb44ce350b30a, 1c7434aced9e9c9ad1bd8a90bc1c08eeb7587a4a, 3af80f43b8c7d4dd36ad149f7a5dc647b258330a, 95637cfcf37a4d9acf05aa3e46dff6f7799f763a)

v4.5.0

6 years ago

This is the December release of Glide.

Features

  • Add an API to pause all requests for a given Activity or Fragment to allow callers to manually reduce memory when their Fragment or Application is backgrounded (@kurtisnelson, 09e33a2133eb1d4005b227439c0c53c9c4e8c89b)
  • Fully support Bitmap re-use for RGBA_F16 Bitmaps. Previously Glide supported decoding RGBA_F16 Bitmaps, but would not re-use any stored in the BitmapPool when doing so (cc0288c3b4bfb82a109a3f279af52c57fc5e1499)
  • Support decoding Videos from resources as AssetFileDescriptors (6e9866b5a19d06625006a9a8c605db21047df74b)
  • Added support for the MediaMetadataRetriever#getScaledFrameAtTime method added in OMR1 to marginally reduce memory usage when decoding video frames (ded8f77c9f2471e3c3413aa234656df8cf72dd2f)
  • Support transcoding BitmapDrawables to byte[]s (015d2659a9ea7438ab72b94500a0921f8ff35aa3)

Bugs

  • Cleaned up old and incorrect @TargetApi annoatations (@SUPERCILEX, 67783961c71639871cc3687894976e6caeb6609e)
  • Added @Nullable and @NonNull annotations to many of Glide's APIs (@SUPERCILEX, dc12b60c8f0a21eb9b3ab2164471c93d2e20ae25, c3dafde00a061bafcd43a739336ca3503af13a7d, 0cffd1da977e9ca334032ebc1d798213a177aab7, f541b65e596a49d252ba6b80d3b05a111ce93461, 36e0b802c3a1e564caf230b351a6438fa32100ac, 650bb7770d08b279c2a7f00e25337618da54f7f3, bd2f21595d3404e6aadf1f4333bef369509c4a56, e35a73b4e78f2f05dc5c1163b8083ac1b662b02f, f37ced1512f7eabf37f6c93b1b7ffb32c3629b72, bb96b633174184965cd1bdf9027ef3843f59c54f, 276d4ff4bdce85763c985c90a87ea5e858a1ffe4, c3107801dab8ccbe121157bee7dba29b7d9723e6, )
  • Fixed a case where restarting an identical request with skipMemoryCache(true) would complete the load from the memory cache (#2663, 3dc1d18da75b44d8d97f4161fe0d330e4993e537)
  • Fixed decoding interlaced and downsampled GIFs as static images (#2698, b64f23de2a7ba38fceac1cda85f05158e80132f9)
  • Added more models to the list of devices requiring a lock when decoding or drawing Bitmaps (@strooooke, #738, c809f7ec03bbfc2c529f2c211cfc644c2073aab0, e923554b10fa9625f4fa6fe706f3d5a553843ab9)
  • Fixed a race condition where starting multiple loads simultaneously the first time any request is made for a given model and resource could lead to NPEs (#2708, d427cbd33206cbcc88ac4a0f0c29ef831d4bb5b5)
  • Make the annotation processor tests pass on Windows (@SUPERCILEX, #2709, 2b4be8b8c210abb34740f0778434679b644a6525)
  • Fix NPE and RuntimeExceptions thrown in DefaultConnectivityMonitor on some devices (c902730b75085cecdd40cd5817453d8af0eff4e9)
  • Only trim to half of the memory cache maximum size, not the current size, when background the app (@kurtisnelson, 429b7e2d9854da549eb0b852e2e08de176f05fbf)
  • Fix a StateVerifier exception thrown when ResourceEncoder implementations unexpectedly throw exceptions while writing resources to Glide's disk cache (6c7cf3f8cae998469a7e7df8c70c459311479a38)
  • Fix an NPE error message when ResourceDrawableDecoder fails to decode an image (d522ac7249ca1bf71f6de30e62d71a1faa8d4c4c)
  • Fix an IllegalStateException if a request using .error() is cleared while the error request is running (#2767, 9c70aa5f92f523c6bac29628554fdde5428e0cdd)
  • Cleaned up a number of accessor classes generated by unnecessarily strict visibility in inner classes (@TWiStErRob, e02969417a75048af0fcb61c5fbf6ea94bd2c4aa)
  • Updated OkHttp and removed a no longer necessary workaround for ClassCastExceptions thrown by the Android framework on O (#2355, 642b2dc431e54cb677088e934743d78f1ad84810)
  • Added missing annotations to overrides on some of Glide's generated classes (@TWiStErRob, 62d7464fb4f874897121591815ecb7503f7bc01b, 9fde00628f223e96372aeceadcb3e35a0635cb6d, d7bb6f956b34dd00ad0dbcb64f15f4b9c2fb0538)
  • Avoid throwing exceptions when LruBitmapPool was asked to provide Bitmaps with a null config (c1036c1cdc3c85827bf566e104a12ca880e26411)

Behavior Changes

  • Default to aar packaging in POMs, so @aar should no longer be required to avoid warnings about jars depending on aars (06ba3442fd8d25c943e986c2bd6c138aa4b390e3)
  • Default active resource retention to false (73759b9eb1d3b186c4deb6412137b0b1193fbd5d), but leave the option in GlideBuilder to manually enable it. Enabling active resource retention can lead to recycled Bitmap errors or Bitmap re-use bugs if applications call Bitmap.recycle() on any images loaded by Glide or mutate the contents of Bitmaps loaded by Glide.
  • Treat devices with API < 19 as having ActivityManager.isLowRam set to true (#2650, b221d4bbec138efcdb1aabd07600b7df713f9e40)

Breaking Changes

  • Removed deprecated constructors requiring Contexts in most of Glide's default Transformation (23975d933bcda7d136340b9988f2bd575065b667, 733b2e0f25a6d3ddbb4942172e92a9fe01c87363, 9bedc2b5fe5b1b2e05203af173c73f0e599a0177, 55594baf791ccb49dd5cdc256662360717b409bb, d8f6224d127b984c3ac1356d44f62126e4843d07, d840533448fd7bde528e0af7ce10c49653430c12, 2f76842b8ef9ac15c43a2c5175f23496b5a13f37, 144ac5374eb0bd11a8f8e92d7346dafac1426621, 150ebabbd7d5e8751c8678fa01418d1b1f1259da, 92d761d002da25320f2c504267f56d73b889b2d4, a6f1b1c1bef5b4e8be736c564792715266b07463)
  • The @NonNull and @Nullable annotations added in this release may break builds that depend on compiler plugins that do static nullability analysis, typically due a lack of annotations on any implemenations you might have of Glide's interfaces.

Deprecations

Build Changes

  • Glide must be compiled against API 27 (@SUPERCILEX, #2730, 75c2a8b6d216013e7fbf797231839a8f4c82757a)
  • Glide uses v27 of the support libraries (though v26 should work as well, to use v26 of the support library, see Glide's Android SDK requirements docs page)
  • Updated to PMD 6.0.0 (@TWiStErRob, f16aef4c6ad583bafe796c7a952a0d10920c4dcd)
  • Fix a PMD failure when building with --profile or any other way in which class files didn't happen to have already been compiled (@TWiStErRob, #2776, fd73179166b15af246769c9b1ae205c65c584e5b)