🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

3056閲覧

androidアプリで非同期処理を行う場合の最新の実装方法について

hiro094

総合スコア26

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

2クリップ

投稿2019/12/30 09:14

httpリクエスト等をandroidアプリのメイン処理では行ってはいけないため非同期処理する必要があるみたいですが、
調べるとAsyncTaskやAsyncTaskLoaderが真っ先に出てくるのですが、ちょっと調べてみるともう古いみたいでAPI level 28から非推奨になってしまったようなのですが、今の非同期処理というのはどう実装するのが正しいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

AsyncTaskはAndroid11から非推奨になります。まだドキュメントには反映されていませんがソースレベルではdeprecatedとなっています。参考記事
すぐにAsyncTaskが使えなくなるわけではありませんが、世に広まっているAsyncTaskを利用したコードは古く大抵問題をはらんでいるので、Googleとしても使わない方向に持っていきたいのでしょう。

今後、Androidのライフサイクルを考慮しつつ非同期処理を自分で実装するとしたら、以下のいずれかの方法が主流になっていくと思います。

1. Kotlinを使っている場合

kotlinx.coroutines + AAC Lifecycle
https://developer.android.com/topic/libraries/architecture/coroutines

2. リアクティブな構成にしたい場合

RxJava + RxLifecycle or AutoDispose + AAC Lifecycle

3. それ以外(簡単な非同期処理)

java.util.concurrent(Executorなど) + AAC Lifecycle

ただし、httpリクエストの非同期処理ならばOkHttp等のライブラリが内部で勝手に行ってくれるので、自分で実装する機会はあまり無いでしょう。

投稿2020/01/05 15:14

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro094

2020/01/06 02:06

ありがとうございます! 個人でやっているので気にし過ぎな気もしますが、なるべくAsyncTaskを使わない方向で行きたいと思います。ライブラリも探してみます。
guest

0

AsyncTask
には非推奨という文言は見当たりません.

AsyncTaskLoader
には

This class was deprecated in API level 28.

Use the Support Library AsyncTaskLoader

とあり, サポートライブラリのほうでは

This package is part of the Android support library which is no longer maintained. The support library has been superseded by AndroidX which is part of Jetpack. We recommend using the AndroidX libraries in all new projects. You should also consider migrating existing projects to AndroidX.

となり, AndroidX に移行せよという感じでしょうか.

AndroidX は良く分からないのですが Executor があるようです.

投稿2019/12/30 15:28

jimbe

総合スコア13201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro094

2019/12/31 00:45

ありがとうございます。AsyncTaskと比べてAsyncTaskLoaderの方がandoridのライフサイクルに適応してアクティビティが横画面になった時等の再構成された時にも対応できるみたいな事書いてあったので、てっきりAsyncTaskの方が古いものだと思っていました。 AsyncTaskを使おうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問