[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

シェアする

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

フォローする