Loading core/java/android/os/StrictMode.java +5 −1 Original line number Diff line number Diff line Loading @@ -1276,11 +1276,14 @@ public final class StrictMode { state.mActiveHead = mNext; } state.mActiveSize--; if (LOG_V) Log.d(TAG, "Span finished=" + mName + "; size=" + state.mActiveSize); this.mCreateMillis = -1; this.mName = null; this.mPrev = null; this.mNext = null; state.mActiveSize--; // Add ourselves to the freeList, if it's not already // too big. Loading Loading @@ -1367,6 +1370,7 @@ public final class StrictMode { if (span.mNext != null) { span.mNext.mPrev = span; } if (LOG_V) Log.d(TAG, "Span enter=" + name + "; size=" + state.mActiveSize); } return span; } Loading core/java/android/widget/AbsListView.java +39 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.os.Debug; import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; import android.os.StrictMode; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; Loading Loading @@ -459,6 +460,15 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private static final boolean PROFILE_FLINGING = false; private boolean mFlingProfilingStarted = false; /** * The StrictMode "critical time span" objects to catch animation * stutters. Non-null when a time-sensitive animation is * in-flight. Must call finish() on them when done animating. * These are no-ops on user builds. */ private StrictMode.Span mScrollStrictSpan = null; private StrictMode.Span mFlingStrictSpan = null; /** * The last CheckForLongPress runnable we posted, if any */ Loading Loading @@ -2089,6 +2099,16 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mAdapter.unregisterDataSetObserver(mDataSetObserver); mDataSetObserver = null; } if (mScrollStrictSpan != null) { mScrollStrictSpan.finish(); mScrollStrictSpan = null; } if (mFlingStrictSpan != null) { mFlingStrictSpan.finish(); mFlingStrictSpan = null; } } @Override Loading Loading @@ -2559,6 +2579,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } if (mScrollStrictSpan == null) { // If it's non-null, we're already in a scroll. mScrollStrictSpan = StrictMode.enterCriticalSpan("AbsListView-scroll"); } if (y != mLastY) { // We may be here after stopping a fling and continuing to scroll. // If so, we haven't disallowed intercepting touch events yet. Loading Loading @@ -2722,6 +2747,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mScrollProfilingStarted = false; } } if (mScrollStrictSpan != null) { mScrollStrictSpan.finish(); mScrollStrictSpan = null; } break; } Loading Loading @@ -2934,6 +2964,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mFlingProfilingStarted = true; } } if (mFlingStrictSpan == null) { mFlingStrictSpan = StrictMode.enterCriticalSpan("AbsListView-fling"); } } void startScroll(int distance, int duration) { Loading Loading @@ -3012,6 +3046,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mFlingProfilingStarted = false; } } if (mFlingStrictSpan != null) { mFlingStrictSpan.finish(); mFlingStrictSpan = null; } } break; } Loading Loading
core/java/android/os/StrictMode.java +5 −1 Original line number Diff line number Diff line Loading @@ -1276,11 +1276,14 @@ public final class StrictMode { state.mActiveHead = mNext; } state.mActiveSize--; if (LOG_V) Log.d(TAG, "Span finished=" + mName + "; size=" + state.mActiveSize); this.mCreateMillis = -1; this.mName = null; this.mPrev = null; this.mNext = null; state.mActiveSize--; // Add ourselves to the freeList, if it's not already // too big. Loading Loading @@ -1367,6 +1370,7 @@ public final class StrictMode { if (span.mNext != null) { span.mNext.mPrev = span; } if (LOG_V) Log.d(TAG, "Span enter=" + name + "; size=" + state.mActiveSize); } return span; } Loading
core/java/android/widget/AbsListView.java +39 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.os.Debug; import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; import android.os.StrictMode; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; Loading Loading @@ -459,6 +460,15 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private static final boolean PROFILE_FLINGING = false; private boolean mFlingProfilingStarted = false; /** * The StrictMode "critical time span" objects to catch animation * stutters. Non-null when a time-sensitive animation is * in-flight. Must call finish() on them when done animating. * These are no-ops on user builds. */ private StrictMode.Span mScrollStrictSpan = null; private StrictMode.Span mFlingStrictSpan = null; /** * The last CheckForLongPress runnable we posted, if any */ Loading Loading @@ -2089,6 +2099,16 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mAdapter.unregisterDataSetObserver(mDataSetObserver); mDataSetObserver = null; } if (mScrollStrictSpan != null) { mScrollStrictSpan.finish(); mScrollStrictSpan = null; } if (mFlingStrictSpan != null) { mFlingStrictSpan.finish(); mFlingStrictSpan = null; } } @Override Loading Loading @@ -2559,6 +2579,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } if (mScrollStrictSpan == null) { // If it's non-null, we're already in a scroll. mScrollStrictSpan = StrictMode.enterCriticalSpan("AbsListView-scroll"); } if (y != mLastY) { // We may be here after stopping a fling and continuing to scroll. // If so, we haven't disallowed intercepting touch events yet. Loading Loading @@ -2722,6 +2747,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mScrollProfilingStarted = false; } } if (mScrollStrictSpan != null) { mScrollStrictSpan.finish(); mScrollStrictSpan = null; } break; } Loading Loading @@ -2934,6 +2964,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mFlingProfilingStarted = true; } } if (mFlingStrictSpan == null) { mFlingStrictSpan = StrictMode.enterCriticalSpan("AbsListView-fling"); } } void startScroll(int distance, int duration) { Loading Loading @@ -3012,6 +3046,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mFlingProfilingStarted = false; } } if (mFlingStrictSpan != null) { mFlingStrictSpan.finish(); mFlingStrictSpan = null; } } break; } Loading