目的

個人的主観です。

Kotlinでのコルーチン(Androidで非同期を行う時に利用する機能)の利用例として、
GlobalScope.launchを用いて説明しているサイトをかなり多く見受けられます。 ただ、個人的には、
GlobalScope.launchは使わない方が良いと思います。
そのメモ。

環境

  • Android Studio 4.0.1
  • Kotlin 1.3.50

参照サイト

Kotlin Coroutine Basics

対応メモ

上記KotlinのCoroutineを記載している公式サイトにて、
最初から思いっきりGlobalScope.launchの利用例を載せてます。
実際、GlobalScope.launchは軽量で使いやすいということです。

ただ、
そのページ中程に以下の文章があります。

If we forget to keep a reference to the newly launched coroutine, it still runs. 
...
Having to manually keep references to all the launched coroutines and join them is error-prone.

manually keep referencesや、still runsや、error-proneなどと書いていて、
処理内容がある程度メモリに残ってしまうようなニュアンスがあります。
代わりにrunBlockingを使えなどの記載も見受けられます。

軽量なので、そうそうメモリリークすることないと思いますが、
GlobalScope.launchを利用し続けるのは控えた方が良いと思いました。

まぁ、実際そういう案件に遭遇して、別の関数に置き換えたんですけどね。。。

置き換えについては以下を利用しましたが、、
AsyncTaskもちょいちょい悪い評判聞きまし、Android 11ではDeprecatedになるよう。

private val mHandler = Handler(Looper.getMainLooper())

AsyncTask.execute{
    ...
    mHandler.post{ // メインスレッド
        ...
    }
}

以上です。