void updateTimes() { Iterator<ActiveItem> it = mActiveItems.values().iterator(); while (it.hasNext()) { ActiveItem ai = it.next(); if (ai.mRootView.getWindowToken() == null) { // Clean out any dead views, just in case. it.remove(); continue; } ai.updateTime(getContext(), mBuilder); } }
public ActiveItem bind(RunningState state, RunningState.BaseItem item, StringBuilder builder) { synchronized (state.mLock) { PackageManager pm = rootView.getContext().getPackageManager(); if (item.mPackageInfo == null && item instanceof RunningState.MergedItem) { // Items for background processes don't normally load // their labels for performance reasons. Do it now. RunningState.MergedItem mergedItem = (RunningState.MergedItem) item; if (mergedItem.mProcess != null) { ((RunningState.MergedItem) item).mProcess.ensureLabel(pm); item.mPackageInfo = ((RunningState.MergedItem) item).mProcess.mPackageInfo; item.mDisplayLabel = ((RunningState.MergedItem) item).mProcess.mDisplayLabel; } } name.setText(item.mDisplayLabel); ActiveItem ai = new ActiveItem(); ai.mRootView = rootView; ai.mItem = item; ai.mHolder = this; ai.mFirstRunTime = item.mActiveSince; if (item.mBackground) { description.setText(rootView.getContext().getText(R.string.cached)); } else { description.setText(item.mDescription); } item.mCurSizeStr = null; icon.setImageDrawable(item.loadIcon(rootView.getContext(), state)); icon.setVisibility(View.VISIBLE); ai.updateTime(rootView.getContext(), builder); return ai; } }