PagingRequestHelper.java 文件源码

java
阅读 42 收藏 0 点赞 0 评论 0

项目:android-architecture-components 作者:
/**
 * Runs the given {@link Request} if no other requests in the given request type is already
 * running.
 * <p>
 * If run, the request will be run in the current thread.
 *
 * @param type    The type of the request.
 * @param request The request to run.
 * @return True if the request is run, false otherwise.
 */
@SuppressWarnings("WeakerAccess")
@AnyThread
public boolean runIfNotRunning(@NonNull RequestType type, @NonNull Request request) {
    boolean hasListeners = !mListeners.isEmpty();
    StatusReport report = null;
    synchronized (mLock) {
        RequestQueue queue = mRequestQueues[type.ordinal()];
        if (queue.mRunning != null) {
            return false;
        }
        queue.mRunning = request;
        queue.mStatus = Status.RUNNING;
        queue.mFailed = null;
        queue.mLastError = null;
        if (hasListeners) {
            report = prepareStatusReportLocked();
        }
    }
    if (report != null) {
        dispatchReport(report);
    }
    final RequestWrapper wrapper = new RequestWrapper(request, this, type);
    wrapper.run();
    return true;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号