线程池
- ScheduledThreadPoolExecutor.scheduleAtFixedRate
private var threadPool = ScheduledThreadPoolExecutor(1)
override fun onCreate() {
super.onCreate()
var i = 0
threadPool.scheduleAtFixedRate({
Log.d(TAG, "onBind: ${i++}")
}, 0, 1000, TimeUnit.MILLISECONDS)
}
override fun onDestroy() {
super.onDestroy()
threadPool.shutdownNow()
}
Handler
private var handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
timerRunning()
}
}
private var i = 0
fun timerRunning() {
Log.d(TAG, "timerRunning: ${i++}")
if (i == 5) stopSelf()
handler.sendEmptyMessageDelayed(0, 1000)
}
override fun onCreate() {
super.onCreate()
timerRunning()
}
override fun onDestroy() {
super.onDestroy()
handler.removeCallbacksAndMessages(null)
}
RxJava
var dispose: Disposable? = null
var count: Int = 0
private startCounter() {
dispose = Observable.interval(1000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
count = (60 - it).toInt()
}
}
override fun onDestroy() {
super.onDestroy()
dispose?.dispose()
}
CountDownTimer