public interface

Clock

 androidx.media3.common.util.Clock

Subclasses:

FakeClock, SystemClock

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-common', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-common
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-common:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

An interface through which system clocks can be read and HandlerWrappers created. The Clock.DEFAULT implementation must be used for all non-test cases.

Summary

Fields
public static final ClockDEFAULT

Default Clock to use for all non-test cases.

Methods
public HandlerWrappercreateHandler(Looper looper, Handler.Callback callback)

Creates a HandlerWrapper using a specified looper and a specified callback for handling messages.

public longcurrentTimeMillis()

Returns the current time in milliseconds since the Unix Epoch.

public longelapsedRealtime()

public longnanoTime()

See nanoTime

public voidonThreadBlocked()

Notifies the clock that the current thread is about to be blocked and won't return until a condition on another thread becomes true.

public longuptimeMillis()

Fields

public static final Clock DEFAULT

Default Clock to use for all non-test cases.

Methods

public long currentTimeMillis()

Returns the current time in milliseconds since the Unix Epoch.

See also: currentTimeMillis

public long elapsedRealtime()

See also:

public long uptimeMillis()

See also:

public long nanoTime()

See nanoTime

public HandlerWrapper createHandler(Looper looper, Handler.Callback callback)

Creates a HandlerWrapper using a specified looper and a specified callback for handling messages.

See also: Handler

public void onThreadBlocked()

Notifies the clock that the current thread is about to be blocked and won't return until a condition on another thread becomes true.

Should be a no-op for all non-test cases.

Source

/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.media3.common.util;

import android.os.Handler;
import android.os.Looper;
import androidx.annotation.Nullable;
import org.checkerframework.checker.initialization.qual.UnknownInitialization;

/**
 * An interface through which system clocks can be read and {@link HandlerWrapper}s created. The
 * {@link #DEFAULT} implementation must be used for all non-test cases.
 */
@UnstableApi
public interface Clock {

  /** Default {@link Clock} to use for all non-test cases. */
  Clock DEFAULT = new SystemClock();

  /**
   * Returns the current time in milliseconds since the Unix Epoch.
   *
   * @see System#currentTimeMillis()
   */
  long currentTimeMillis();

  /**
   * @see android.os.SystemClock#elapsedRealtime()
   */
  long elapsedRealtime();

  /**
   * @see android.os.SystemClock#uptimeMillis()
   */
  long uptimeMillis();

  /** See {@link java.lang.System#nanoTime()} */
  long nanoTime();

  /**
   * Creates a {@link HandlerWrapper} using a specified looper and a specified callback for handling
   * messages.
   *
   * @see Handler#Handler(Looper, Handler.Callback)
   */
  HandlerWrapper createHandler(
      Looper looper, @Nullable Handler.@UnknownInitialization Callback callback);

  /**
   * Notifies the clock that the current thread is about to be blocked and won't return until a
   * condition on another thread becomes true.
   *
   * <p>Should be a no-op for all non-test cases.
   */
  void onThreadBlocked();
}