web-dev-qa-db-ja.com

Android Pで非推奨のフラグメント

documentation を見ていましたが、これを見つけました

このクラスはAPIレベルPで廃止されました。

フラグメントがAndroid Pで非推奨になったのはなぜですか?

40
RoyalGriffin

サポートライブラリ27.1.0の書き換え

Ianのメディア投稿 (2018年2月28日)は、それについて説明しています。彼はAndroid Googleのフレームワーク開発者です。

サポートライブラリのローダー27.1.0

「サポートライブラリ27.1.0」では、「Loaders API」を駆動するクラスである「LoaderManager」の内部を書き直し、変更の背後にある理由と今後の予定について説明したいと思いました。

ローダーとフラグメント、a history
最初から、ローダーとフラグメントはヒップでかなり緊密に結び付けられていました。つまり、実際にはかなり独立しているという事実にもかかわらず、「FragmentActivity」と「Fragment」の多くのコードがローダーをサポートするために存在していました。 …

27.1.0の変更点
27.1.0では、ローダーの技術的負債が大幅に削減されました。…

注:明らかに、これらの変更はサポートライブラリローダーにのみ適用されます。 Androidフレームワークローダーを使用している場合は、できるだけ早くサポートライブラリローダーに切り替えてください。フレームワークローダーAPIには、バグの修正や改善の計画はありません。

ローダーをオプションの依存関係にするために、FragmentおよびFragmentActivityのコードがリファクタリングされたようです。

リリースノート によれば、新しい実装はLifecycleに基づいています。

重要な変更
underlying Loaders の基礎となる実装は、 Lifecycle を使用するように書き直されました。

アーキテクチャコンポーネント

Support Library 26.1.0 では、Fragment and FragmentActivityLifecycleを採用しました。

これは、サポートライブラリを「アーキテクチャコンポーネントのライフサイクル」と統合するための特別なリリースです。 Lifecyclesライブラリを使用していない場合、26.0.2から更新する必要はありません。詳細については、「アーキテクチャコンポーネントのリリースノート」を参照してください。

重要な変更

  • FragmentおよびFragmentActivity(AppCompatActivityの基本クラス)は、Architecture ComponentsからLifecycleOwnerインターフェイスを実装するようになりました。

対照的に、Android Pの Fragment および Activity は、インターフェースLifecycleOwnerを実装していません。

Google+の投稿ThanosFishermanの回答 に記載)で、Ianはコメントしました:

フレームワークのコードは、出荷後に変更することはできません-文字通り時間内に凍結されます。これは、新機能がなく、さらに重要なこととしてバグ修正がないことを意味します。特に、サポートライブラリに完全にサポートされた最新の下位互換バージョンがある場合は、これは開発者の優れたエクスペリエンスではありません。

それが、Android PがLifecycleを採用しない理由だと思います。その結果、FragmentはAndroid Pで非推奨になりました。

23
qtmfld

サポートライブラリフラグメントはここにあります。 Googleでは、サポートライブラリバージョンを使用して、すべてのAPIレベル、バックポートされたバグ修正、ライフサイクルおよびViewModelのサポート全体で一貫した動作を取得することをお勧めします。

古い参照リンク(デッド)

新しい参照リンク

7
ThanosFisherman