LoginSignup
4
2

More than 3 years have passed since last update.

AsyncTaskLoaderは衰退したのか?

Last updated at Posted at 2019-08-30

〇概要

久々にAsyncTaskLoaderを使ったらsupportLoaderManagerが非推奨になっていました。

'getter for supportLoaderManager: LoaderManager!' is deprecated. Deprecated in Java

loaderManagerも同じく

'getter for loaderManager: LoaderManager!' is deprecated. Deprecated in Java

〇調査

とりあえず公式
https://developer.android.com/reference/android/content/AsyncTaskLoader

目立つところに書いてますね。
warning.png

API level 28から非推奨と
たしかに
implementation 'com.android.support:appcompat-v7:28.0.0'
のバージョンを下げると警告は消えました。

Revisionsを見てみると

Revision 28.0.0 Productionは[September 21, 2018]からリリースなので1年ぐらい前ですね。

Revision 27.1.0 Release
には以下のようなことが
The underlying implementation of Loaders has been rewritten to use Lifecycle. While the API remains unchanged, there are a number of behavior changes:
ローダー関係アーキテクチャーライブラリを使うように書き換えるよと。

stackoverflowの投稿を読んでみると、アクティビティやフラグメントのライフサイクルの流れを考えると、ViewModelやLiveData等のアーキテクチャコンポーネントを使うほうが適切になったそうです。

もう利用頻度は大分減った技術なんですかね・・・

しかし、警告にあるようにSupport Libraryではまだ使えるます!
https://developer.android.com/reference/android/support/v4/content/AsyncTaskLoader.html

したがって修正

〇対応

XXX.kt
getSupportLoaderManager().initLoader(LOADER_TAG_METADATA,bundle,callback)

LoaderManager.getInstance(this).initLoader(LOADER_TAG_METADATA,bundle,callback)

loaderManager.destroyLoader(loader.id)

LoaderManager.getInstance(this@MainActivity).destroyLoader(loader.id)

〇結果

これで警告は解除。
しかし、やはり時代はAndroidのアーキテクチャーコンポーネントを自在に使いこなせるようにならないとダメみたいですね。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2