ActivityEmbeddingOptions
public final class ActivityEmbeddingOptions
Summary
Public methods |
|
|---|---|
static final @NonNull Bundle |
@RequiresWindowSdkExtension(version = 5)Sets the target launching |
Public methods
setLaunchingActivityStack
@RequiresWindowSdkExtension(version = 5)
public static final @NonNull Bundle setLaunchingActivityStack(
@NonNull Bundle receiver,
@NonNull Context context,
@NonNull ActivityStack activityStack
)
Sets the target launching ActivityStack to the given Bundle.
The Bundle then could be used to launch an Activity to the top of the ActivityStack through Activity.startActivity. If there's a bundle used for customizing how the Activity should be started by ActivityOptions.toBundle or androidx.core.app.ActivityOptionsCompat.toBundle, it's suggested to use the bundle to call this method.
It is suggested to use a visible ActivityStack reported by SplitController.splitInfoList or OverlayController.overlayInfo, or the launching activity will be launched on the default target if the activityStack no longer exists in the host task. The default target could be the top of the visible split's secondary ActivityStack, or the top of the host task.
Below samples are use cases to specify the launching ActivityStack.
import androidx.core.app.ActivityOptionsCompat import androidx.window.embedding.ActivityStack import androidx.window.embedding.SplitController import androidx.window.embedding.setLaunchingActivityStack var primaryActivityStack: ActivityStack? = null SplitController.getInstance(primaryActivity).splitInfoList(primaryActivity).collect { splitInfoList -> primaryActivityStack = splitInfoList.last().primaryActivityStack } primaryActivity.startActivity( INTENT, ActivityOptionsCompat.makeBasic() .toBundle()!! .setLaunchingActivityStack(primaryActivity, primaryActivityStack!!), )
import androidx.core.app.ActivityOptionsCompat import androidx.window.embedding.ActivityStack import androidx.window.embedding.OverlayController import androidx.window.embedding.setLaunchingActivityStack var overlayActivityStack: ActivityStack? = null OverlayController.getInstance(context).overlayInfo(TAG_OVERLAY).collect { overlayInfo -> overlayActivityStack = overlayInfo.activityStack } // The use case is to launch an Activity to an existing overlay ActivityStack from the overlain // Activity. If activityStack is not specified, the activity is launched to the top of the // host task behind the overlay ActivityStack. overlainActivity.startActivity( INTENT, ActivityOptionsCompat.makeBasic() .toBundle()!! .setLaunchingActivityStack(overlainActivity, overlayActivityStack!!), )
| Parameters | |
|---|---|
@NonNull Context context |
The |
@NonNull ActivityStack activityStack |
The target |
| Throws | |
|---|---|
UnsupportedOperationException |
if |