AndroidでKotlinのCoroutineを使うときの注意です。CoroutineDispatcherの選択を誤ると意図しない結果になります。 環境はkotlinx-coroutines-android:0.16になります。 非同期処理をCoroutineで実現する場合、以下のようなCommonPoolを使ったサンプルが多いと思いますが、これではジョブをキャンセルした場合にasync内の処理がキャンセルされません。 では、違う方法にします。先程CommpnPoolを渡してた場所をcontextを渡すようにします。contextを指定し場合は親のジョブの子のような扱いになり、ジョブをキャンセルしたときに子もキャンセルされます。