インターンに参加しました。柔軟に対応していただくことができた。😊!以下間違って理解してしまっていることがあるかもしれません。下手に過信しないでください。その実装に迫ったスライドhttps://speakerdeck.com/sys1yagi/kotlin-korutinwo-li-jie-siyou?slide=60公式ドキュメントhttps://developer.android.com/kotlin/coroutines?hl=ja個人的に、非同期処理は参加したインターンで一番勉強したかったところです。suspendキーワードでしょう。理解するためにまずこれを頭に叩き入れます。使うと処理が中断できるようになります。とあるブロックが紐づいたインスタンス(ドキュメントでは計算インスタンスと呼ばれていました)です。以下のコードを見てみます。つブロックがあります。}のこと(赤色部分)でこの中には処理がかけます。ブロックとは処理のまとまりを表します。このブロック一つ一つはオブジェクトではありません(よってインスタンスでもありません)。このブロックをオブジェクトとして扱いたいのです。ブロックをオブジェクトとして扱いたいのでしょうか?答えはブロックをオブジェクトとして扱うことでとあるブロック.中断する()といったコードが書けるようになるためです。処理を中断できると言いましたが、これができるのはブロックをオブジェクトとして扱うことができるからです。ブロックをオブジェクトとして扱う実際にブロックをオブジェクトとして扱うためにはどうするのでしょうか?例を示します。playMusic()}以上です。関数を使ってブロック(ラムダ式)をオブジェクトとして生成し、jobという変数に代入しています。ブロックをJobクラスというクラスとして扱います。クラスにcancelメソッドという中断できるメソッドが含まれているので、job.cancel()とすることでブロック(処理)を中断することができるのです。この動きをコルーチンを起動するとかいったりします。それを使って通信だとか並列処理だとか重い処理だとかを行うことができますが、処理をいくつかに分けているだけです。...}以下を頭に叩き込んでくださいsuspendがついた関数はその実行中に中断できます。関数内もしくはlaunch関数内でしか呼び出しできません。呼び出しもとの中断していた後の処理を行う。}}こんな感じに実装しているそうです。doNext()が呼ばれる。関数を実行しているときにdelay()のようなsuspend関数を呼び出すことになったら自身を渡して呼び出した関数が終わり次第this.doNext()を読んでもらう。自身の処理が終了したら自身の呼び出しもと.doNext()を呼び出す。関数はと関数の呼び出し時に再開したい関数(呼び出し元関数)を渡されるようになり、呼び出し元関数の再開ができるように、つまりは中断しても後で再開できるようになるわけです。関数は中断ができる関数です。アプリにおいてはどのように使うのか見てみましょう。}viewModelScope.launchを使用します。死ぬと自動的に内部のコルーチンをキャンセルしてくれます(あら便利)。使えば別スレッドで処理を行いたい時もいい感じに処理をかけます。ビルダーと呼ばれます。ビルダーはlaunch以外にもasyncなどがあります。実行結果を得ることができます。TBStenとかいて「てべすてん」と読みます!!バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。