CellTowerDatabase.java 文件源码

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

项目:LocalGSMLocationProvider 作者:
/**
 * Perform a (cached) DB query for a given cell tower. Note that MCC and MNC can be null.
 * @param mcc
 * @param mnc
 * @param cid
 * @param lac
 * @return
 */
public List<CellInfo> query(final Integer mcc, final Integer mnc, final int cid, final int lac) {
    if (this.reader == null) return null;

    if (cid == NeighboringCellInfo.UNKNOWN_CID || cid == Integer.MAX_VALUE) return null;

    if (mcc != null && mcc == Integer.MAX_VALUE) return query(null, mnc, cid, lac);
    if (mnc != null && mnc == Integer.MAX_VALUE) return query(mcc, null, cid, lac);

    QueryArgs args = new QueryArgs(mcc, mnc, cid, lac);
    Boolean negative = queryResultNegativeCache.get(args);
    if (negative != null && negative.booleanValue()) return null;

    List<CellInfo> cached = queryResultCache.get(args);
    if (cached != null) return cached;

    List<CellInfo> result = _query(mcc, mnc, cid, lac);

    if (result == null) {
        queryResultNegativeCache.put(args, true);
        return null;
    }

    result = Collections.unmodifiableList(result);

    queryResultCache.put(args, result);
    return result;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号