[Audiosharing] Show dialogs when lifecycle isAtLeast STARTED

Test: atest
Flag: com.android.settingslib.flags.enable_le_audio_sharing
Bug: 305620450
Change-Id: I34f4f46b9377f1e3ec1a4cd27687c14d674f6da4
This commit is contained in:
Yiyi Shen
2024-09-25 14:15:13 +08:00
parent 7a91f6e7bf
commit 57355a0743
8 changed files with 43 additions and 1 deletions

View File

@@ -31,6 +31,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothPairingDetail; import com.android.settings.bluetooth.BluetoothPairingDetail;
@@ -95,6 +96,11 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
sHost = host; sHost = host;
sListener = listener; sListener = listener;
sEventData = eventData; sEventData = eventData;

View File

@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -92,6 +93,11 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
if (dialog != null) { if (dialog != null) {
int newGroupId = BluetoothUtils.getGroupId(newDevice); int newGroupId = BluetoothUtils.getGroupId(newDevice);

View File

@@ -25,6 +25,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.BluetoothUtils;
@@ -52,6 +53,11 @@ public class AudioSharingErrorDialogFragment extends InstrumentedDialogFragment
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
if (dialog != null) { if (dialog != null) {
Log.d(TAG, "Dialog is showing, return."); Log.d(TAG, "Dialog is showing, return.");

View File

@@ -26,6 +26,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.BluetoothUtils;
@@ -68,6 +69,11 @@ public class AudioSharingIncompatibleDialogFragment extends InstrumentedDialogFr
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
sListener = listener; sListener = listener;
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
if (dialog != null) { if (dialog != null) {

View File

@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.bluetooth.Utils; import com.android.settings.bluetooth.Utils;
@@ -89,6 +90,11 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
sListener = listener; sListener = listener;
sNewDevice = newDevice; sNewDevice = newDevice;
sEventData = eventData; sEventData = eventData;

View File

@@ -31,6 +31,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -72,6 +73,11 @@ public class AudioSharingProgressDialogFragment extends InstrumentedDialogFragme
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
if (dialog != null) { if (dialog != null) {
if (!sMessage.equals(message)) { if (!sMessage.equals(message)) {

View File

@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -89,6 +90,11 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
Log.d(TAG, "Fail to show dialog: " + e.getMessage()); Log.d(TAG, "Fail to show dialog: " + e.getMessage());
return; return;
} }
Lifecycle.State currentState = host.getLifecycle().getCurrentState();
if (!currentState.isAtLeast(Lifecycle.State.STARTED)) {
Log.d(TAG, "Fail to show dialog with state: " + currentState);
return;
}
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
if (dialog != null) { if (dialog != null) {
int newGroupId = BluetoothUtils.getGroupId(newDevice); int newGroupId = BluetoothUtils.getGroupId(newDevice);

View File

@@ -767,7 +767,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
&& !(fragment instanceof AudioSharingErrorDialogFragment) && !(fragment instanceof AudioSharingErrorDialogFragment)
&& ((DialogFragment) fragment).getDialog() != null) { && ((DialogFragment) fragment).getDialog() != null) {
Log.d(TAG, "Remove stale dialog = " + fragment.getTag()); Log.d(TAG, "Remove stale dialog = " + fragment.getTag());
((DialogFragment) fragment).dismiss(); ((DialogFragment) fragment).dismissAllowingStateLoss();
} }
} }
} }