code: public static void loadCompressedTexture(final GVRContext gvrContext,
              final ResourceCache<GVRImage> textureCache,
              final CompressedTextureCallback callback,
              final GVRAndroidResource resource, final int quality)
              throws IllegalArgumentException {
          validateCallbackParameters(gvrContext, callback, resource);
  
          final GVRImage cached = textureCache == null ? null : textureCache
                  .get(resource);
          if (cached != null) {
              Log.v("ASSET", "Texture: %s loaded from cache", cached.getFileName());
              gvrContext.runOnGlThread(new Runnable() {
  
                  @Override
                  public void run() {
                      callback.loaded(cached, resource);
                  }
              });
          }
          else
          {
              CompressedTextureCallback actualCallback = textureCache == null ? callback
                      : ResourceCache.wrapCallback(textureCache, callback);
              AsyncCompressedTexture.loadTexture(gvrContext,
                                             CancelableCallbackWrapper.wrap(GVRCompressedImage.class, actualCallback),
                                             resource, GVRContext.LOWEST_PRIORITY);
          }
      }
docs: Load a compressed texture asynchronously.
  
  This is the implementation of
  {@link GVRContext#loadCompressedTexture(GVRAndroidResource.CompressedTextureCallback, GVRAndroidResource)}
  : it will usually be more convenient (and more efficient) to call that
  directly.
  
  @param gvrContext
  The GVRF context
  @param textureCache
  Texture cache - may be {@code null}
  @param callback
  Asynchronous notifications
  @param resource
  Basically, a stream containing a compressed texture. Taking a
  {@link GVRAndroidResource} parameter eliminates six overloads.
  @param quality
  Speed/quality tradeoff: should be one of
  {@link GVRCompressedImage#SPEED},
  {@link GVRCompressedImage#BALANCED}, or
  {@link GVRCompressedImage#QUALITY}, but other values are
  'clamped' to one of the recognized values.
  @throws IllegalArgumentException
  If {@code gvrContext} or {@code callback} parameters are
  {@code null}