Java Code Examples for android.util.LongSparseArray#size()

The following examples show how to use android.util.LongSparseArray#size() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AccessibilityCache.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
/**
 * Clears nodes for the window with the given id
 */
private void clearNodesForWindowLocked(int windowId) {
    if (DEBUG) {
        Log.i(LOG_TAG, "clearNodesForWindowLocked(" + windowId + ")");
    }
    LongSparseArray<AccessibilityNodeInfo> nodes = mNodeCache.get(windowId);
    if (nodes == null) {
        return;
    }
    // Recycle the nodes before clearing the cache.
    final int nodeCount = nodes.size();
    for (int i = nodeCount - 1; i >= 0; i--) {
        AccessibilityNodeInfo info = nodes.valueAt(i);
        nodes.removeAt(i);
        info.recycle();
    }
    mNodeCache.remove(windowId);
}
 
Example 2
Source File: Transition.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
/**
 * Match start/end values by Adapter item ID. Adds matched values to mStartValuesList
 * and mEndValuesList and removes them from unmatchedStart and unmatchedEnd, using
 * startItemIds and endItemIds as a guide for which Views have unique item IDs.
 */
private void matchItemIds(ArrayMap<View, TransitionValues> unmatchedStart,
        ArrayMap<View, TransitionValues> unmatchedEnd,
        LongSparseArray<View> startItemIds, LongSparseArray<View> endItemIds) {
    int numStartIds = startItemIds.size();
    for (int i = 0; i < numStartIds; i++) {
        View startView = startItemIds.valueAt(i);
        if (startView != null && isValidTarget(startView)) {
            View endView = endItemIds.get(startItemIds.keyAt(i));
            if (endView != null && isValidTarget(endView)) {
                TransitionValues startValues = unmatchedStart.get(startView);
                TransitionValues endValues = unmatchedEnd.get(endView);
                if (startValues != null && endValues != null) {
                    mStartValuesList.add(startValues);
                    mEndValuesList.add(endValues);
                    unmatchedStart.remove(startView);
                    unmatchedEnd.remove(endView);
                }
            }
        }
    }
}
 
Example 3
Source File: TrackSelectionAdapterWrapper.java    From ticdesign with Apache License 2.0 6 votes vote down vote up
/**
 * Returns the set of checked items ids. The result is only valid if the
 * choice mode has not been set to {@link AbsListView#CHOICE_MODE_NONE} and the adapter
 * has stable IDs. ({@link ListAdapter#hasStableIds()} == {@code true})
 *
 * @return A new array which contains the id of each checked item in the
 *         list.
 */
public long[] getCheckedItemIds() {
    if (mChoiceMode == AbsListView.CHOICE_MODE_NONE || mCheckedIdStates == null) {
        return new long[0];
    }

    final LongSparseArray<Integer> idStates = mCheckedIdStates;
    final int count = idStates.size();
    final long[] ids = new long[count];

    for (int i = 0; i < count; i++) {
        ids[i] = idStates.keyAt(i);
    }

    return ids;
}
 
Example 4
Source File: ProcessStatsService.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
@GuardedBy("mAm")
public boolean setMemFactorLocked(int memFactor, boolean screenOn, long now) {
    mMemFactorLowered = memFactor < mLastMemOnlyState;
    mLastMemOnlyState = memFactor;
    if (mInjectedScreenState != null) {
        screenOn = mInjectedScreenState;
    }
    if (screenOn) {
        memFactor += ProcessStats.ADJ_SCREEN_ON;
    }
    if (memFactor != mProcessStats.mMemFactor) {
        if (mProcessStats.mMemFactor != ProcessStats.STATE_NOTHING) {
            mProcessStats.mMemFactorDurations[mProcessStats.mMemFactor]
                    += now - mProcessStats.mStartTime;
        }
        mProcessStats.mMemFactor = memFactor;
        mProcessStats.mStartTime = now;
        final ArrayMap<String, SparseArray<LongSparseArray<ProcessStats.PackageState>>> pmap
                = mProcessStats.mPackages.getMap();
        for (int ipkg=pmap.size()-1; ipkg>=0; ipkg--) {
            final SparseArray<LongSparseArray<ProcessStats.PackageState>> uids =
                    pmap.valueAt(ipkg);
            for (int iuid=uids.size()-1; iuid>=0; iuid--) {
                final LongSparseArray<ProcessStats.PackageState> vers = uids.valueAt(iuid);
                for (int iver=vers.size()-1; iver>=0; iver--) {
                    final ProcessStats.PackageState pkg = vers.valueAt(iver);
                    final ArrayMap<String, ServiceState> services = pkg.mServices;
                    for (int isvc=services.size()-1; isvc>=0; isvc--) {
                        final ServiceState service = services.valueAt(isvc);
                        service.setMemFactor(memFactor, now);
                    }
                }
            }
        }
        return true;
    }
    return false;
}
 
Example 5
Source File: ThemedResourceCache.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
private boolean pruneEntriesLocked(@Nullable LongSparseArray<WeakReference<T>> entries,
        @Config int configChanges) {
    if (entries == null) {
        return true;
    }

    for (int i = entries.size() - 1; i >= 0; i--) {
        final WeakReference<T> ref = entries.valueAt(i);
        if (ref == null || pruneEntryLocked(ref.get(), configChanges)) {
            entries.removeAt(i);
        }
    }

    return entries.size() == 0;
}
 
Example 6
Source File: LongSparseArrayIterator.java    From trekarta with GNU General Public License v3.0 5 votes vote down vote up
private LongSparseArrayIterator(LongSparseArray<E> array, int location) {
    this.array = array;
    if (location < 0) {
        cursor = -1;
        cursorNowhere = true;
    } else if (location < array.size()) {
        cursor = location;
        cursorNowhere = false;
    } else {
        cursor = array.size() - 1;
        cursorNowhere = true;
    }
}
 
Example 7
Source File: SparseArrays.java    From deagle with Apache License 2.0 5 votes vote down vote up
@RequiresApi(Build.VERSION_CODES.JELLY_BEAN)
public static <T> Iterable<T> iterate(final LongSparseArray<T> array) {
	return new Iterable<T>() { @Override public Iterator<T> iterator() {
		return new Iterator<T>() {
			@Override public boolean hasNext() { return i < array.size(); }
			@Override public T next() { return array.valueAt(i ++); }
			int i = 0;
		};
	}};
}
 
Example 8
Source File: AccessibilityInteractionController.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
private void enforceNodeTreeConsistent(List<AccessibilityNodeInfo> nodes) {
    LongSparseArray<AccessibilityNodeInfo> nodeMap =
            new LongSparseArray<AccessibilityNodeInfo>();
    final int nodeCount = nodes.size();
    for (int i = 0; i < nodeCount; i++) {
        AccessibilityNodeInfo node = nodes.get(i);
        nodeMap.put(node.getSourceNodeId(), node);
    }

    // If the nodes are a tree it does not matter from
    // which node we start to search for the root.
    AccessibilityNodeInfo root = nodeMap.valueAt(0);
    AccessibilityNodeInfo parent = root;
    while (parent != null) {
        root = parent;
        parent = nodeMap.get(parent.getParentNodeId());
    }

    // Traverse the tree and do some checks.
    AccessibilityNodeInfo accessFocus = null;
    AccessibilityNodeInfo inputFocus = null;
    HashSet<AccessibilityNodeInfo> seen = new HashSet<AccessibilityNodeInfo>();
    Queue<AccessibilityNodeInfo> fringe = new LinkedList<AccessibilityNodeInfo>();
    fringe.add(root);

    while (!fringe.isEmpty()) {
        AccessibilityNodeInfo current = fringe.poll();

        // Check for duplicates
        if (!seen.add(current)) {
            throw new IllegalStateException("Duplicate node: "
                    + current + " in window:"
                    + mViewRootImpl.mAttachInfo.mAccessibilityWindowId);
        }

        // Check for one accessibility focus.
        if (current.isAccessibilityFocused()) {
            if (accessFocus != null) {
                throw new IllegalStateException("Duplicate accessibility focus:"
                        + current
                        + " in window:" + mViewRootImpl.mAttachInfo.mAccessibilityWindowId);
            } else {
                accessFocus = current;
            }
        }

        // Check for one input focus.
        if (current.isFocused()) {
            if (inputFocus != null) {
                throw new IllegalStateException("Duplicate input focus: "
                    + current + " in window:"
                    + mViewRootImpl.mAttachInfo.mAccessibilityWindowId);
            } else {
                inputFocus = current;
            }
        }

        final int childCount = current.getChildCount();
        for (int j = 0; j < childCount; j++) {
            final long childId = current.getChildId(j);
            final AccessibilityNodeInfo child = nodeMap.get(childId);
            if (child != null) {
                fringe.add(child);
            }
        }
    }

    // Check for disconnected nodes.
    for (int j = nodeMap.size() - 1; j >= 0; j--) {
        AccessibilityNodeInfo info = nodeMap.valueAt(j);
        if (!seen.contains(info)) {
            throw new IllegalStateException("Disconnected node: " + info);
        }
    }
}
 
Example 9
Source File: MessagingBuilder.java    From decorator-wechat with Apache License 2.0 4 votes vote down vote up
@Nullable MessagingStyle buildFromArchive(final Conversation conversation, final Notification n, final CharSequence title, final List<StatusBarNotification> archive) {
	// Chat history in big content view
	if (archive.isEmpty()) {
		Log.d(TAG, "No history");
		return null;
	}

	final LongSparseArray<Pair<CharSequence/* text */, CharSequence/* ticker */>> lines = new LongSparseArray<>(MAX_NUM_HISTORICAL_LINES);
	int count = 0, num_lines_with_colon = 0;
	final String redundant_prefix = title.toString() + SENDER_MESSAGE_SEPARATOR;
	for (final StatusBarNotification each : archive) {
		final Notification notification = each.getNotification();
		final Bundle its_extras = notification.extras;
		final CharSequence its_title = EmojiTranslator.translate(its_extras.getCharSequence(Notification.EXTRA_TITLE));
		if (! title.equals(its_title)) {
			Log.d(TAG, "Skip other conversation with the same key in archive: " + its_title);	// ID reset by WeChat due to notification removal in previous evolving
			continue;
		}
		final CharSequence its_text = its_extras.getCharSequence(EXTRA_TEXT);
		if (its_text == null) {
			Log.w(TAG, "No text in archived notification.");
			continue;
		}
		final int result = trimAndExtractLeadingCounter(its_text);
		if (result >= 0) {
			count = result & 0xFFFF;
			CharSequence trimmed_text = its_text.subSequence(result >> 16, its_text.length());
			if (trimmed_text.toString().startsWith(redundant_prefix))	// Remove redundant prefix
				trimmed_text = trimmed_text.subSequence(redundant_prefix.length(), trimmed_text.length());
			else if (trimmed_text.toString().indexOf(SENDER_MESSAGE_SEPARATOR) > 0) num_lines_with_colon ++;
			lines.put(notification.when, new Pair<>(trimmed_text, notification.tickerText));
		} else {
			count = 1;
			lines.put(notification.when, new Pair<>(its_text, n.tickerText));
			if (its_text.toString().indexOf(SENDER_MESSAGE_SEPARATOR) > 0) num_lines_with_colon ++;
		}
	}
	n.number = count;
	if (lines.size() == 0) {
		Log.w(TAG, "No lines extracted, expected " + count);
		return null;
	}

	final MessagingStyle messaging = new MessagingStyle(mUserSelf);
	final boolean sender_inline = num_lines_with_colon == lines.size();
	for (int i = 0, size = lines.size(); i < size; i ++) {            // All lines have colon in text
		final Pair<CharSequence/* Text */, CharSequence/* Ticker */> line = lines.valueAt(i);
		messaging.addMessage(buildMessage(conversation, lines.keyAt(i), line.second, line.first, sender_inline ? null : title.toString()));
	}
	return messaging;
}
 
Example 10
Source File: SyncAdapter.java    From ChannelSurfer with MIT License 4 votes vote down vote up
public void performSync(TvInputProvider provider, String inputId) {
    Log.d(TAG, "Actually begin the sync");
    List<Channel> allChannels = provider.getAllChannels(getContext());
    if(allChannels == null) {
        //You have no channels!!
        return;
    }
    Log.d(TAG, allChannels.toString());
    for (int i = 0; i < allChannels.size(); i++) {
        if (allChannels.get(i).getOriginalNetworkId() == 0)
            allChannels.get(i).setOriginalNetworkId(i + 1);
        if (allChannels.get(i).getTransportStreamId() == 0)
            allChannels.get(i).setTransportStreamId(i + 1);
    }
    TvContractUtils.updateChannels(getContext(), inputId, allChannels);

    LongSparseArray<Channel> channelMap = TvContractUtils.buildChannelMap(
            mContext.getContentResolver(), inputId, allChannels);
    if (channelMap == null) {
        Log.d(TAG, "?");
        Handler h = new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                Toast.makeText(getContext(), "Couldn't find any channels. Uh-oh.", Toast.LENGTH_SHORT).show();
            }
        };
        h.sendEmptyMessage(0);
        //Let's not continue running
        return;
    }
    long startMs = new Date().getTime();
    long endMs = startMs + FULL_SYNC_WINDOW_SEC * 1000;
    Log.d(TAG, "Now start to get programs");
    for (int i = 0; i < channelMap.size(); ++i) {
        Uri channelUri = TvContract.buildChannelUri(channelMap.keyAt(i));
        List<Program> programList = provider.getProgramsForChannel(getContext(), channelUri, channelMap.valueAt(i), startMs, endMs);
        Log.d(TAG, "Okay, we NEED to set the channel id first");
        for(Program p: programList) {
            p.setChannelId(channelMap.keyAt(i));
        }
        Log.d(TAG, "For " + channelMap.valueAt(i).toString());
        Log.d(TAG, programList.toString());
        updatePrograms(channelUri, programList);
        //Let's double check programs
        Uri programEditor = TvContract.buildProgramsUriForChannel(channelUri);
    }
    Log.d(TAG, "Sync performed");
}