protected void loadResource(ResourceSpecs<T> specs) {
        if (specs == null) return;

        String uri = specs.getUri();
        if (uri == null || uri.length() == 0) {
            if (isVerbose()) Log.d(TAG, "1. Resource was not loaded, uri is empty");
            specs.onLoaded(null, true, false);
            return;
        }

        T res = getFromMemoryCache(toCacheKey(uri));
        if (res != null) {
            if (isVerbose()) Log.d(TAG, "1. Resource is loaded from memory cache in same moment: " + uri);
            specs.onLoaded(res, true, false);
        } else {
            if (isVerbose()) Log.d(TAG, "1. Resource is posted to the queue: " + uri);
            specs.onPrepare();
            mLoadingManager.addSpecs(specs);
        }

        if (mManagerThread == null) {
            mManagerThread = new Thread(new ManagerTask());
            mManagerThread.start();
        }
    }