国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kotlin:使用flow實現(xiàn)倒計時功能

這篇具有很好參考價值的文章主要介紹了Kotlin:使用flow實現(xiàn)倒計時功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、效果圖

Kotlin:使用flow實現(xiàn)倒計時功能,# kotlin,kotlin,android

二、ExtendContext.kt 文件代碼

注意:創(chuàng)建ExtendContext.kt選擇file
使用kotlin擴展方法的特性創(chuàng)建countDown擴展方法,避免多個地方使用倒計時重復(fù)創(chuàng)建countDown方法
Kotlin:使用flow實現(xiàn)倒計時功能,# kotlin,kotlin,android文章來源地址http://www.zghlxwxcb.cn/news/detail-827441.html

package com.example.baselib.extension

import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch

fun FragmentActivity.countDown(
    timeMillis: Long = 1000,//默認時間間隔 1 秒
    time: Int = 3,//默認時間為 3 秒
    start: (scop: CoroutineScope) -> Unit,
    end: () -> Unit,
    next: (time: Int) -> Unit,
    error: (msg: String?) -> Unit
) {
    lifecycleScope.launch {
        flow {
            (time downTo 1).forEach {
                delay(timeMillis)
                emit(it)
            }
        }.onStart {
            start(this@launch)
        }.onCompletion {
            end()
        }.catch {
            error(it.message ?: "countDown 出現(xiàn)未知錯誤")
        }.collect {
            next(it)
        }
    }
}

三、MainActivity.kt代碼

package com.example.testkotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.baselib.extension.countDown
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.cancel

class MainActivity : AppCompatActivity() {
    private var mCountDown: CoroutineScope? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        loadData()

    }

    private fun loadData() {
        this.countDown(time = 5, start = {
            mCountDown = it
        }, end = {
            Log.i("==", "倒計時結(jié)束了")

        }, next = {
            Log.i("==", "剩余 $it 秒")

        }, error = {

        })
    }

    override fun onDestroy() {
        mCountDown?.let {
            it.cancel()
        }
        super.onDestroy()
    }
}

四、build.gradle.kts代碼

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.testkotlin"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.example.testkotlin"
        minSdk = 23
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {

    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.11.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

到了這里,關(guān)于Kotlin:使用flow實現(xiàn)倒計時功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)倒計時功能,一看就懂,直接用

    結(jié)構(gòu)完整,直接用就可以

    2024年02月01日
    瀏覽(32)
  • 使用css3實現(xiàn)一個超浪漫的新年倒計時

    使用css3實現(xiàn)一個超浪漫的新年倒計時

    新年快到了,使用css3實現(xiàn)一個超浪漫的新年倒計時吧,希望大家喜歡。 目錄 1 實現(xiàn)思路? 2 實現(xiàn)浪漫的心形背景 3 布局小時分鐘和秒的區(qū)域 4、js倒計時? 5、然后就是將所得的小時、分鐘、秒對DOM進行賦值? 6、每秒一更新? 7、補充知識點1- 倒計時為什么不寫1000 8、補充知識

    2024年02月03日
    瀏覽(25)
  • 51單片機實現(xiàn)倒計時,按鍵控制倒計時

    51單片機實現(xiàn)倒計時,按鍵控制倒計時

    基于AT89C52的答辯倒計時。四個按鍵分別控制倒計時開始,暫停,時間加和減。剩下30S時蜂鳴器響,倒計時結(jié)束蜂鳴器響。 ?

    2024年02月07日
    瀏覽(33)
  • uni-app小程序中實現(xiàn)倒計時功能

    在uni-app小程序中實現(xiàn)倒計時功能,可以按照以下步驟進行: 在data中設(shè)置一個變量用于存儲倒計時的剩余時間: 在methods中創(chuàng)建一個函數(shù),用于控制倒計時的邏輯: 可以在點擊按鈕或其他事件觸發(fā)時調(diào)用startCountdown方法來開始倒計時: 在頁面中顯示倒計時時間: 可以在頁面中

    2024年02月07日
    瀏覽(29)
  • jquery 實現(xiàn)倒計時

    $(\\\".tableText\\\").click(function () { ? ? var time = 60; ? ? var timer = setInterval(function(){ ? ? ? ? time--; ? ? ? ? $(\\\".tableText\\\").text(\\\"(\\\"+time+\\\"秒)重發(fā)\\\"); ? ? ? ? if(time==0){ ? ? ? ? ? ? clearInterval(timer); ? ? ? ? ? ? $(\\\".tableText\\\").text(\\\"獲取驗證碼\\\"); ? ? ? ? } ? ? },1000); });

    2024年04月14日
    瀏覽(32)
  • 51單片機通過計時器實現(xiàn)倒計時

    51單片機通過計時器實現(xiàn)倒計時

    軟件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    瀏覽(118)
  • 【D01】Django中實現(xiàn)帶進度條的倒計時功能(簡易版)

    【D01】Django中實現(xiàn)帶進度條的倒計時功能(簡易版)

    首先說明簡易版是只有一個 倒計時 和一個 進度條 ,頁面加載后自動開始計時,下次計時需要手動刷新頁面。 后續(xù)會更新實現(xiàn)完整的倒計時功能的文章 前端框架 你需要準備一些前端框架: Bootstrap4 和 jQuery 安裝方法請自行查閱官方文檔或教程 Bootstrap4:https://v4.bootcss.com/do

    2023年04月12日
    瀏覽(28)
  • java 倒計時實現(xiàn)的方式

    java 倒計時實現(xiàn)的方式

    ? 倒計時的實現(xiàn)方法有很多種,本文給大家介紹其中一種,最簡單的一種實現(xiàn)方式,也是最方便的一種方式,希望能幫到大家。 1、 java中倒計時是利用循環(huán)來實現(xiàn)的,我們可以使用循環(huán)語句來實現(xiàn)。 2、 java中使用 bool類的 setTimeout方法也是可以實現(xiàn)倒計時的。 3、 java中還有一

    2024年02月09日
    瀏覽(29)
  • jquery 實現(xiàn)倒計時60秒

    2024年02月04日
    瀏覽(37)
  • 【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴展方法

    【C#】當(dāng)重復(fù)使用一段代碼倒計時時,使用靜態(tài)類和靜態(tài)方法,實現(xiàn)簡單的this擴展方法

    歡迎來到《小5講堂》 大家好,我是全棧小5。 這是《C#》序列文章,每篇文章將以博主理解的角度展開講解, 特別是針對知識點的概念進行敘說,大部分文章將會對這些概念進行實際例子驗證,以此達到加深對知識點的理解和掌握。 溫馨提示:博主能力有限,理解水平有限

    2024年01月19日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包