アンドロイド学習


Thread

  • プロセスにおける「連続運転」の最小単位.
  • ワークフローの最小単位
  • 📎 AndroidでのThread


    1つのThreadでは1つのタスクしか実行できません.アプリケーションに1つのMain Threadしか存在しない場合は、複数のタスクを同時に実行できません.長時間のタスクを実行する必要がある場合は、以降のタスクが待機時間の低効率化をもたらす可能性があります.これは必須です.

    1. Main Thread

  • Thread
  • プロセス開始時に作成された最初のThread
  • UIのすべてのタスクは、Main Threadで完了する必要があります.
    UI Threadとも呼ばれます.
  • 単一スレッドであるため、与えられたタスクは順次実行される.
  • アプリケーションの実行中に停止することはできません.
  • ネットワーク、データベースに関する操作ができません
  • 📎 Threadの作成


    1.Threadオブジェクトの作成に必要な実行可能オブジェクト
  • runnableオブジェクトで上書きされたrun()関数には、Threadが実行する必要がある操作コードが含まれます.
  • val runnable: Runnable = object : Runnable{
        override fun run() {
                    //작업 코드
                    Log.d("thread", "Thread1 is made")
        }
    }
    2.Threadオブジェクトの作成
  • 1で作成した実行可能オブジェクトをパラメータとして渡します.
  • val thread: Thread = Thread(runnable)
    3.Thread起動
    thread.start()

    ❗匿名オブジェクトに簡略化して実行

    Thread(object:Runnable{
        override fun run() {
             Log.d("thread", "Thread2 is made")
        }
    }).start()

    最も簡単な方法で実行

    Thread {
          Thread.sleep(2000) // 해당 Thread를 3초동안 잠재움
          Log.d("thread", "Thread3 is made")
    }.start()

    worker threadでUIを変更する場合

  • runOnUiThread.
  • Thread {
        Thread.sleep(2000)
        Log.d("thread2", "Thread3 is made")
        runOnUiThread {
                    button.setBackgroundColor(getColor(R.color.yellow))
        }
    }.start()