Skip to content

Commit ece4d12

Browse files
authored
Make fragment leftover from an attach/detach race slightly safer (flutter#29908)
1 parent 8403397 commit ece4d12

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

shell/platform/android/io/flutter/embedding/android/FlutterFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,9 @@ public void onResume() {
784784
// possible.
785785
@ActivityCallThrough
786786
public void onPostResume() {
787-
delegate.onPostResume();
787+
if (stillAttachedForEvent("onPostResume")) {
788+
delegate.onPostResume();
789+
}
788790
}
789791

790792
@Override

shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,11 @@ public void itCanBeDetachedFromTheEngineAndStopSendingFurtherEvents() {
121121
fragment.setDelegate(mockDelegate);
122122
fragment.onStart();
123123
fragment.onResume();
124+
fragment.onPostResume();
124125

125126
verify(mockDelegate, times(1)).onStart();
126127
verify(mockDelegate, times(1)).onResume();
128+
verify(mockDelegate, times(1)).onPostResume();
127129

128130
fragment.onPause();
129131
fragment.detachFromFlutterEngine();
@@ -136,9 +138,11 @@ public void itCanBeDetachedFromTheEngineAndStopSendingFurtherEvents() {
136138

137139
fragment.onStart();
138140
fragment.onResume();
141+
fragment.onPostResume();
139142
// No more events through to the delegate.
140143
verify(mockDelegate, times(1)).onStart();
141144
verify(mockDelegate, times(1)).onResume();
145+
verify(mockDelegate, times(1)).onPostResume();
142146

143147
fragment.onDestroy();
144148
// 1 time same as before.

0 commit comments

Comments
 (0)