web-dev-qa-db-ja.com

非推奨のgetSupportLoaderManager()の適切な置換は何ですか?

GetSupportLoaderManagerが非推奨であることを知りました。しかし、私は電話したい:

getSupportLoaderManager().initLoader(0, null, mRecipeLoaderManager);

その呼び出しに代わるものは何ですか?または、心配せずにgetSupportLoaderManagerを使用できますか?

14
fabi

ここで述べたように: Loaders

「ローダーはAndroid P(API 28)で非推奨になりました。アクティビティおよびフラグメントのライフサイクルを処理しながらデータをロードするための推奨オプションは、ViewModelsとLiveDataの組み合わせを使用することです。

廃止されたものがある場合は、開発者サイトに直接アクセスして、探しているクラスまたは関数を確認すると、既にdeprecatedとしてマークされており、より良い代替手段があります。

8
Kavin Prabhu

このメソッドが非推奨になった理由は、ローダーが、すぐにオプションの依存関係となる独自のライブラリに住むために、歴史的なFragmentおよびFragmentActivity実装からアンバンドルされたためです。 アーキテクチャコンポーネントの上に書き直されました。

LoaderManagerインスタンスを取得するバンドルされていない方法は、静的ファクトリーメソッドを使用することです。

LoaderManager.getInstance(T)

ここで、TLifecycleOwnerViewModelStoreOwnerの両方のインスタンスです(主な実装はFragmentActivityFragmentです)。

8
BladeCoder

私もこの問題を抱えており、このコードは私のためにそれを解決しましたLoaderManager.getInstance(this).initLoader(0,null,mRecipeLoaderManager);

私はそれが役立つことを願っています

7
amos godwin

Android.support.v4.app.LoaderManager.getInstance(this).initLoader(0, null, this).forceLoad();が必要な場合は、getSupportLoaderManagerを引き続き使用できます。

6
MohammadL

ここでは、ローダーをViewModelに置き換える方法について簡単に説明します。

https://developer.Android.com/jetpack/Arch/viewmodel#loaders

そこにあるグラフィックは一目瞭然です。

enter image description here

enter image description here

より詳細な説明については、次のブログ投稿をご覧ください。

https://medium.com/google-developers/lifecycle-aware-data-loading-with-Android-architecture-components-f95484159de4

2
Fran Marzoa