日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Android Studio】Runnable

Android Studio kotlinのメソッドパーツ化
今回はRunnableです
Runnableは定期的に指定の処理をするタイマーです

var runnable = Runnable {  } 
val handler = Handler()

 runnable = Runnable {
            Handler().postDelayed(
                {
			/*処理*/
		}, 3000 )    //3000ミリ秒(3秒)後にタイマー開始
            handler.postDelayed(runnable,1000)   //1000ミリ秒(1秒)ごとに処理をする
        }
        handler.post(runnable)

タイマー処理を中止するときは

handler.removeCallbacks(runnable)

使用例はこちら(xmlファイルは省略します)

import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val btStart:Button = findViewById(R.id.btstart)
        val btStop:Button = findViewById(R.id.btstop)
        val tv:TextView = findViewById(R.id.tv)

        var runnable = Runnable {  }
        val handler = Handler()
        btStart.setOnClickListener {
            runnable = Runnable {
                Handler().postDelayed(
                    {
                        tv.setBackgroundColor(Color.rgb((0..255).random(),(0..255).random(),(0..255).random()))   //処理
                    }, 0 )   //0秒後にタイマー開始
                handler.postDelayed(runnable,2000)   //2秒ごとに処理を実行
            }
            handler.post(runnable)
        }
        btStop.setOnClickListener {
            handler.removeCallbacks(runnable)
        }
    }
}

スタートボタンを押すとテキストのバックの色が2秒ごとに変わります
ストップボタンを押すと色を変える処理を中止します