Merge "Fix exception from DateTimeView unregisters receiver again" into pi-dev
This commit is contained in:
@@ -450,8 +450,10 @@ public class DateTimeView extends TextView {
|
||||
|
||||
public void removeView(DateTimeView v) {
|
||||
synchronized (mAttachedViews) {
|
||||
mAttachedViews.remove(v);
|
||||
if (mAttachedViews.isEmpty()) {
|
||||
final boolean removed = mAttachedViews.remove(v);
|
||||
// Only unregister once when we remove the last view in the list otherwise we risk
|
||||
// trying to unregister a receiver that is no longer registered.
|
||||
if (removed && mAttachedViews.isEmpty()) {
|
||||
unregister(getApplicationContextIfAvailable(v.getContext()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.widget;
|
||||
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.annotation.UiThreadTest;
|
||||
import android.support.test.filters.SmallTest;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@SmallTest
|
||||
public class DateTimeViewTest {
|
||||
|
||||
@UiThreadTest
|
||||
@Test
|
||||
public void additionalOnDetachedFromWindow_noException() {
|
||||
final DateTimeView dateTimeView = new DateTimeView(InstrumentationRegistry.getContext());
|
||||
dateTimeView.onAttachedToWindow();
|
||||
dateTimeView.onAttachedToWindow();
|
||||
// Even there is an additional detach (abnormal), DateTimeView should not unregister
|
||||
// receiver again that raises "java.lang.IllegalArgumentException: Receiver not registered".
|
||||
dateTimeView.onDetachedFromWindow();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user