diff options
| author | 2023-03-10 05:15:45 +0000 | |
|---|---|---|
| committer | 2023-03-13 14:21:10 +0000 | |
| commit | 8682c7c4ce959cd85c49934dba4b7dba158aa495 (patch) | |
| tree | 356c0ac9fc526ad3c870af0538046f5261a28ff6 | |
| parent | 883585c473d5b2192754bc29a60b8e89f32e7862 (diff) | |
Cache Device Motion Prediction Availability
This saves the time needed for multiple method calls to get Resources and a resource value each time a prediction API is called.
Change-Id: Id7b2610a0a4bafc6bced69aeedb25ca1148755ea
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:4aa74158a6493f9c22d377fff1f9478a0f5a2f97)
Merged-In: Id7b2610a0a4bafc6bced69aeedb25ca1148755ea
| -rw-r--r-- | core/java/android/view/MotionPredictor.java | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/core/java/android/view/MotionPredictor.java b/core/java/android/view/MotionPredictor.java index 7d452f954fb0..27af3000fc8b 100644 --- a/core/java/android/view/MotionPredictor.java +++ b/core/java/android/view/MotionPredictor.java @@ -49,15 +49,17 @@ public final class MotionPredictor { // Pointer to the native object. private final long mPtr; - private final Context mContext; + // Device-specific override to enable/disable motion prediction. + private final boolean mIsPredictionEnabled; /** * Create a new MotionPredictor for the provided {@link Context}. * @param context The context for the predictions */ public MotionPredictor(@NonNull Context context) { - mContext = context; - final int offsetNanos = mContext.getResources().getInteger( + mIsPredictionEnabled = context.getResources().getBoolean( + com.android.internal.R.bool.config_enableMotionPrediction); + final int offsetNanos = context.getResources().getInteger( com.android.internal.R.integer.config_motionPredictionOffsetNanos); mPtr = nativeInitialize(offsetNanos); RegistryHolder.REGISTRY.registerNativeAllocation(this, mPtr); @@ -73,7 +75,7 @@ public final class MotionPredictor { * @throws IllegalArgumentException if an inconsistent MotionEvent stream is sent. */ public void record(@NonNull MotionEvent event) { - if (!isPredictionEnabled()) { + if (!mIsPredictionEnabled) { return; } nativeRecord(mPtr, event); @@ -94,21 +96,12 @@ public final class MotionPredictor { */ @Nullable public MotionEvent predict(long predictionTimeNanos) { - if (!isPredictionEnabled()) { + if (!mIsPredictionEnabled) { return null; } return nativePredict(mPtr, predictionTimeNanos); } - private boolean isPredictionEnabled() { - // Device-specific override - if (!mContext.getResources().getBoolean( - com.android.internal.R.bool.config_enableMotionPrediction)) { - return false; - } - return true; - } - /** * Check whether a device supports motion predictions for a given source type. * @@ -120,7 +113,7 @@ public final class MotionPredictor { * @see MotionEvent#getSource */ public boolean isPredictionAvailable(int deviceId, int source) { - return isPredictionEnabled() && nativeIsPredictionAvailable(mPtr, deviceId, source); + return mIsPredictionEnabled && nativeIsPredictionAvailable(mPtr, deviceId, source); } private static native long nativeInitialize(int offsetNanos); |