SlideShare a Scribd company logo
1 of 15
Download to read offline
Androidの非同期
武藤  梨沙
そもそも非同期の必要性
非同期処理の例
Androidでよく見かける非同期技術
AsyncTask
AsyncTaskLoader
Coroutine
お話しすること
NetworkOnMainThreadException
RESTAPI呼び出しなど通信が発生する処理は非同期にしないといけない!
同期処理じゃダメ???
画面グルグル地獄
① アプリ起動
②  Mainスレッド生成
③  API呼び出し
④  取得データをゴニョゴニョ
⑤  画面描画
同期処理だとこんな感じ!
Mainスレッドしかいないと
画面が表示されるまで結構かかる
つまり、こゆこと!!!
Mainスレッド
極悪プログラマーの
あなた
あなたは善良なプログラマーですよね?
非同期処理の例
① アプリ起動
② Mainスレッド生成
  → 画面描画
③ Workerスレッド生成
  → API実行
  → 取得データをゴニョゴニョ
Mainスレッド
Workerスレッド
画面描画
データ取得API
呼び出し
非同期イメージ@脳内
データ表示
スレッド = 処理の実行単位
②と③は
同時進行!
お願い、この世界から画面グルグル地獄をなくして
つまり、ここから本題
Androidでよく見かける非同期技術
AsyncTask
AsyncTask
Loader
Coroutine
AsyncTask
アプリ内の全てのAsyncTaskタスクは
1スレッドで実行される
→1つ1つが短時間の処理であれば効果的
→長時間処理だとキューがつかえて
 遅くなってしまう。。。 API
呼び出し
Mainスレッド
UIスレッド
動画
読み込み
グラフ
作成
実行中
タスクキュー
非同期処理クラスLoaderのサブクラス
AsyncTaskと比べると、UI操作処理を
Mainスレッド(Activityなど)に
まとめられるところが良い!
AsyncTaskだとAsyncTaskのスレッドに
onPostExecute()書いて取得データ表示してたよね
AsyncTaskLoader(Loaderクラス)
Mainスレッド
Workerスレッド
API
呼び出し
画面パーツ
描画
取得データ
表示
Kotlinでサポートされている並行実行機能
(クラスではなく、組み込み関数チック)
まず、クラスでないところが良い!
・・・Kotlinは多重継承できない
Activityのライフサイクルと連携できる!
一緒に破棄
async+awaitで非同期処理の結果を
Mainスレッドにて変数で受け取ることも可能
Coroutine
データロード
クラス
画像ロード
クラス
動画ロード
クラス
継承
非同期にしたいクラスに
スーパークラスがいてもOK
AsyncTask、AsyncTaskLoaderでは
コールバック関数をOverrideして結果を受け取ってたよね
Androidの非同期処理
完全に理解した。
もちろんウソです。
参考リンク
スレッド化によるパフォーマンスの向上
Android での Kotlin コルーチン
アーキテクチャ コンポーネントで Kotlin コルーチンを使用する
AsyncTaskとAsyncTaskLoaderの考察
Kotlin の Coroutine を概観する
AsyncTaskLoaderを使ってみる
Androidディベロッパーガイド
Qiita
Developers.IO

More Related Content

Similar to Androidの非同期

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Drecom Co., Ltd.
 
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)mokelab
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Atsushi Harada
 
[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会Rei Matsushita
 
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみたFirefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみたNobuhiro Ueda
 
Pepper tech festival_2014_技術セッション応用
Pepper tech festival_2014_技術セッション応用Pepper tech festival_2014_技術セッション応用
Pepper tech festival_2014_技術セッション応用Atelier Akihabara
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料Monaca
 
第2回 Android勉強会
第2回 Android勉強会第2回 Android勉強会
第2回 Android勉強会fujikunn
 
Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係Kazushige TAKEUCHI
 
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編Kenji Fukumoto
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてsz yudppp
 
Web API のすすめ
Web API のすすめWeb API のすすめ
Web API のすすめYuji Shimada
 
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnetC#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet将 高野
 
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」Yasuhiko Yamamoto
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということNaruto TAKAHASHI
 

Similar to Androidの非同期 (20)

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会
 
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみたFirefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
 
Pepper tech festival_2014_技術セッション応用
Pepper tech festival_2014_技術セッション応用Pepper tech festival_2014_技術セッション応用
Pepper tech festival_2014_技術セッション応用
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
Herlockサービス紹介
Herlockサービス紹介Herlockサービス紹介
Herlockサービス紹介
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
 
第2回 Android勉強会
第2回 Android勉強会第2回 Android勉強会
第2回 Android勉強会
 
Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係
 
広がる .Net
広がる .Net広がる .Net
広がる .Net
 
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
 
Web API のすすめ
Web API のすすめWeb API のすすめ
Web API のすすめ
 
C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnetC#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう! #ngtnet
 
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということ
 

More from risa buto

無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜risa buto
 
電子工作で猫との暮らし改善
電子工作で猫との暮らし改善電子工作で猫との暮らし改善
電子工作で猫との暮らし改善risa buto
 
座禅入門 by佐谷さん
座禅入門 by佐谷さん座禅入門 by佐谷さん
座禅入門 by佐谷さんrisa buto
 
20230108_AWS試験山張り会
20230108_AWS試験山張り会20230108_AWS試験山張り会
20230108_AWS試験山張り会risa buto
 
20230107_AWS試験山張り会
20230107_AWS試験山張り会20230107_AWS試験山張り会
20230107_AWS試験山張り会risa buto
 
20221231_資格もくもく会
20221231_資格もくもく会20221231_資格もくもく会
20221231_資格もくもく会risa buto
 
エンジニアとして生き残るには
エンジニアとして生き残るにはエンジニアとして生き残るには
エンジニアとして生き残るにはrisa buto
 
node.js入門
node.js入門node.js入門
node.js入門risa buto
 
汗っかき問題と対策
汗っかき問題と対策汗っかき問題と対策
汗っかき問題と対策risa buto
 
terraform基礎
terraform基礎terraform基礎
terraform基礎risa buto
 
手作りのものが食べたい
手作りのものが食べたい手作りのものが食べたい
手作りのものが食べたいrisa buto
 
Invitation of Musical
Invitation of MusicalInvitation of Musical
Invitation of Musicalrisa buto
 
画面テスト自動化
画面テスト自動化画面テスト自動化
画面テスト自動化risa buto
 
発声練習
発声練習発声練習
発声練習risa buto
 
ミュージカル入門
ミュージカル入門ミュージカル入門
ミュージカル入門risa buto
 
Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)risa buto
 
Pixel game creation
Pixel game creationPixel game creation
Pixel game creationrisa buto
 
pygame+gymで強化学習
pygame+gymで強化学習pygame+gymで強化学習
pygame+gymで強化学習risa buto
 
料理はじめました
料理はじめました料理はじめました
料理はじめましたrisa buto
 

More from risa buto (20)

無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
無償ケア労働図鑑 〜これって愛なの?搾取なの?〜
 
電子工作で猫との暮らし改善
電子工作で猫との暮らし改善電子工作で猫との暮らし改善
電子工作で猫との暮らし改善
 
座禅入門 by佐谷さん
座禅入門 by佐谷さん座禅入門 by佐谷さん
座禅入門 by佐谷さん
 
20230108_AWS試験山張り会
20230108_AWS試験山張り会20230108_AWS試験山張り会
20230108_AWS試験山張り会
 
20230107_AWS試験山張り会
20230107_AWS試験山張り会20230107_AWS試験山張り会
20230107_AWS試験山張り会
 
20221231_資格もくもく会
20221231_資格もくもく会20221231_資格もくもく会
20221231_資格もくもく会
 
エンジニアとして生き残るには
エンジニアとして生き残るにはエンジニアとして生き残るには
エンジニアとして生き残るには
 
node.js入門
node.js入門node.js入門
node.js入門
 
汗っかき問題と対策
汗っかき問題と対策汗っかき問題と対策
汗っかき問題と対策
 
terraform基礎
terraform基礎terraform基礎
terraform基礎
 
手作りのものが食べたい
手作りのものが食べたい手作りのものが食べたい
手作りのものが食べたい
 
Invitation of Musical
Invitation of MusicalInvitation of Musical
Invitation of Musical
 
画面テスト自動化
画面テスト自動化画面テスト自動化
画面テスト自動化
 
発声練習
発声練習発声練習
発声練習
 
ミュージカル入門
ミュージカル入門ミュージカル入門
ミュージカル入門
 
Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)Javaキャッチアップ(SE9-12)
Javaキャッチアップ(SE9-12)
 
about me
about meabout me
about me
 
Pixel game creation
Pixel game creationPixel game creation
Pixel game creation
 
pygame+gymで強化学習
pygame+gymで強化学習pygame+gymで強化学習
pygame+gymで強化学習
 
料理はじめました
料理はじめました料理はじめました
料理はじめました
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

Androidの非同期