Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit f796782ea16c76f151e7d7635945f2f27c1190a0
Author: Simon Schiller <simonschiller@users.noreply.github.com>
Date: Mon Mar 22 01:26:40 2021
[GH] [FragmentStrictMode] Detect calls to Fragment#setTargetFragment
## Proposed Changes
- Detect calls to `Fragment#setTargetFragment`
## Testing
Test: See `FragmentStrictModeTest#detectSetTargetFragment`
## Issues Fixed
Fixes: 153737745
This is an imported pull request fromhttps://github.com/androidx/androidx/pull/139 .
Resolves #139
Github-Pr-Head-Sha: 89c830c8fe9c487e0dd14087dc99a720496d5c0f
GitOrigin-RevId: e73f51cf62e973d664cdfd8193b830e24e007a7c
Change-Id: I3066e87ed7cfa2bda19089979c722f1efe4103cf
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/strictmode/FragmentStrictModeTest.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentStrictMode.java
A fragment/fragment/src/main/java/androidx/fragment/app/strictmode/TargetFragmentUsageViolation.java
https://android-review.googlesource.com/1640408
Branch: androidx-main
commit f796782ea16c76f151e7d7635945f2f27c1190a0
Author: Simon Schiller <simonschiller@users.noreply.github.com>
Date: Mon Mar 22 01:26:40 2021
[GH] [FragmentStrictMode] Detect calls to Fragment#setTargetFragment
## Proposed Changes
- Detect calls to `Fragment#setTargetFragment`
## Testing
Test: See `FragmentStrictModeTest#detectSetTargetFragment`
## Issues Fixed
Fixes: 153737745
This is an imported pull request from
Resolves #139
Github-Pr-Head-Sha: 89c830c8fe9c487e0dd14087dc99a720496d5c0f
GitOrigin-RevId: e73f51cf62e973d664cdfd8193b830e24e007a7c
Change-Id: I3066e87ed7cfa2bda19089979c722f1efe4103cf
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/strictmode/FragmentStrictModeTest.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/strictmode/FragmentStrictMode.java
A fragment/fragment/src/main/java/androidx/fragment/app/strictmode/TargetFragmentUsageViolation.java
Description
java.lang.IllegalArgumentException: attempt to remove OnFrameMetricsAvailableListener that was never added
at android.view.View.removeFrameMetricsListener(View.java:5560)
at android.view.Window.removeOnFrameMetricsAvailableListener(Window.java:863)
at androidx.metrics.performance.DelegatingFrameMetricsListener.onFrameMetricsAvailable(JankStatsApi24Impl.kt:226)
at android.view.FrameMetricsObserver.notifyDataAvailable(FrameMetricsObserver.java:72)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)
To repro, run the app, then tap the home button. This disables jank stats tracking, which ends up removing a delegate listener and then the delegator itself (apparently twice).
It's not 100%, but it's fairly frequent.
Looks like there are two places in JankStatsApi24Impl where we remove the delegator listener from the window, in removeFrameMetricsListenerDelegate() (when we have removed the last delegate) and in OnFrameMetricsAvailable (when we detect a delegates list size of 0)