[Android] 非同期処理 Executorの使い方

AsyncTask が非推奨になったので代わりに、Executorを使った非同期処理はどう実装するのか見てみます

Android Studio
2021.2.1




非同期処理

 
非同期処理が必要なケースは、メインスレッドでアプリがUIを表示させたり、ユーザーが入力したりしている裏でいろいろと処理をして欲しい場合です

Google AsyncTask によれば、代わりに
java.util.concurrent or Kotlin concurrency utilities が推奨されています。
ここでは、java.util.concurrent.Executor を使っていきます。

画像などの大きなファイルをダウンロードする場合も非同期を使います
 

http url connection get 00 100x100 - [Android] 非同期処理 Executorの使い方
ネットにHTTPアクセスしてデーターをダウンロードするためには、非同期での処理が必要です。以前はAsyncTaskを使っていましたが非推奨と...

 
尚、AsyncTask はこちらにしばらく残しておきます
非同期処理 AsyncTaskの使い方 (API 30から非推奨)
 

 

AsyncTaskの基本的構造

 
AsynTaskの構造はこうなっていました

 
これをExecutorに当てはめていきますが、
java.util.concurrent.Executorを継承した
ExecutorService から、単一のワーカー・スレッドだけを設定する
newSingleThreadExecutor()
のメソッドを使っていきます

 

サンプルコード

 
重いTaskを非同期で実行させ結果を表示させるサンプルです
 
MainActivity.java

レイアウトです
activity_main.xml

 
リソースです
strings.xml

 
実行してみます
1x1.trans - [Android] 非同期処理 Executorの使い方

 
 
関連ページ:

References:
GoogleのReference
ThreadPoolExecutor | Android Developers







アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

TECH ACADEMY
オンライン説明会


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする