Android Studio kotlinのメソッドパーツ化
今回はタイマータスクです
前にアップしたRunnableと同様 定期的に指定の処理をするタイマーです
動きが同じならどう使い分けるのか?
ごめんなさい 不勉強でよく分かりません
何となくですが クラスの継承に関係があるのかと…
使い分けは説明できませんが 使い方を
val timer = Timer() val handler = Handler() timer.schedule(object : TimerTask() { override fun run() { handler.post { /*処理*/ } } }, 3000, 1000) //3秒後にタイマー開始して 1秒ごとに処理をする
タイマー処理を中止するときは
timer.cancel()
使用例は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 import java.util.Timer import java.util.TimerTask 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 timer = Timer() val handler = Handler() btStart.setOnClickListener { timer = Timer() timer.schedule(object : TimerTask() { override fun run() { handler.post { //タイマー処理の内容 tv.setBackgroundColor(Color.rgb((0..255).random(),(0..255).random(),(0..255).random())) } } }, 0, 2000) //タイマー開始までの時間0ミリ秒,2000ミリ秒ごとに繰り返し } btStop.setOnClickListener { timer.cancel() } } }
実行結果はRunnableの時と同じです
everydayisagoodday.hatenadiary.com
ただTimerは1度キャンセルしてしまうと再利用できません
なのでスタートボタンを押すたびにtimerを設定しています
私が作る簡単なプログラムにはRunnableで十分な気がします