<

Android ActivityControlSurfaceattachToActivity 署名の変更

まとめ

新しいActivityControlSurface方法:

void attachToActivity(
    @NonNull ExclusiveAppComponent<Activity> exclusiveActivity,
    @NonNull Lifecycle lifecycle);

は、現在非推奨になっているメソッドを置き換えています。

void attachToActivity(@NonNull Activity activity, @NonNull Lifecycle lifecycle);

既存の非推奨のメソッドActivityFlutter 2 ではパラメータが削除されました。

コンテクスト

カスタム アクティビティも提供するには、ActivityFlutter プラグインが予期するライフサイクル イベントActivityAwareインターフェース、FlutterEngine暴露したgetActivityControlSurface()API。

これにより、カスタム アクティビティがエンジンに信号を送信できるようになります。 (それには(0|1):1関係)それ エンジンに取り付けたり取り外したりしていました。

ただし、以前の API にはそれができないという欠陥がありました。 に接続するアクティビティ間の除外を強制する エンジンにより、n:1間の関係 アクティビティとエンジン、 ライフサイクルクロストークの問題を引き起こします。

変更内容の説明

後問題 #21272、アクティビティを添付する代わりに にFlutterEngine以下を使用して:

void attachToActivity(@NonNull Activity activity, @NonNull Lifecycle lifecycle);

API は現在非推奨になっていますが、代わりに以下を使用します。

void attachToActivity(
    @NonNull ExclusiveAppComponent<Activity> exclusiveActivity,
    @NonNull Lifecycle lifecycle);

アンExclusiveAppComponent<Activity>インターフェース の代わりに が期待されるようになりました3864悪い9-83e7-4242-bf8d-19db73d37d67。 のExclusiveAppComponent<Activity>コールバックを提供します あなたの排他的なアクティビティが次のようなものに置き換えられる場合に備えて、 別のアクティビティがそれに付随するFlutterEngine

void detachFromActivity();

API は変更されず、引き続き期待されます カスタム時にそれを呼び出す 活動は自然に破壊されています。

移行ガイド

を保持している独自のアクティビティがある場合は、FlutterView、呼び出しを次のように置き換えます。

void attachToActivity(@NonNull Activity activity, @NonNull Lifecycle lifecycle);

以下への呼び出しで:

void attachToActivity(
    @NonNull ExclusiveAppComponent<Activity> exclusiveActivity,
    @NonNull Lifecycle lifecycle);

ActivityControlSurface電話で取得したものgetActivityControlSurface()FlutterEngine

アクティビティをExclusiveAppComponent<Activity>そしてコールバックメソッドを実装します。

void detachFromFlutterEngine();

自分のアクティビティが別のアクティビティに置き換えられるのを処理する に関連付けられているアクティビティFlutterEngine。 通常、同じ取り外し操作を実行したい場合 アクティビティが自然に破壊されるときに実行されるものと同様です。

タイムライン

リリースされたバージョン: 1.23.0-7.0.pre
安定版リリース: 2.0.0

参考文献

やる気を起こさせるバグ:問題 #66192—非独占的 FlutterEngine にアタッチされた UI コンポーネントが原因で イベントクロストーク