/* * Copyright 2017 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.recyclerview.selection; import static androidx.core.util.Preconditions.checkArgument; import static androidx.core.util.Preconditions.checkState; import static androidx.recyclerview.selection.Shared.DEBUG; import android.util.Log; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; /** * OperationMonitor provides a mechanism to coordinate application * logic with ongoing user selection activities (such as active band selection * and active gesture selection). * *
* The host {@link android.app.Activity} or {@link android.app.Fragment} should avoid changing * {@link RecyclerView.Adapter Adapter} data while there * are active selection operations, as this can result in a poor user experience. * *
* To know when an operation is active listen to changes using an {@link OnChangeListener}.
*/
public final class OperationMonitor {
private static final String TAG = "OperationMonitor";
private int mNumOps = 0;
private List