Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Kotlin में फंक्शन को देरी से कैसे कॉल करें?

परिचय

Kotlin जेवीएम पर चलता है, इसलिए जावा के `Timer` और `TimerTask` का उपयोग कर सकते हैं। साथ ही कोटलिन कोरआउट्स आधुनिक तरीका प्रदान करते हैं।

विधि 1: java.util.Timer (पारंपरिक)

import java.util.Timer
import java.util.TimerTask

fun main() {
    println("शुरुआत")
    
    Timer().schedule(5000) {  // 5 सेकंड देरी
        delayedFunction()
    }
    
    println("मुख्य थ्रेड जारी...")
    Thread.sleep(6000)  // मेन थ्रेड जीवित रखने के लिए
}

fun delayedFunction() {
    println("विलंबित फंक्शन कॉल!")
}

आउटपुट

शुरुआत
मुख्य थ्रेड जारी...
विलंबित फंक्शन कॉल!

विधि 2: Kotlin Coroutines (आधुनिक, अनुशंसित)

import kotlinx.coroutines.*

fun main() = runBlocking {
    println("शुरुआत")
    
    // 5 सेकंड देरी
    launch {
        delay(5000L)
        delayedFunction()
    }
    
    println("मुख्य कोरआउट जारी...")
    // runBlocking स्वचालित रूप से प्रतीक्षा करता है
}

fun delayedFunction() {
    println("विलंबित फंक्शन कॉल (कोरआउट्स)!")
}

विधि 3: Handler (एंड्रॉइड मेन थ्रेड के लिए)

import android.os.Handler
import android.os.Looper

// एंड्रॉइड एक्टिविटी/फ्रैगमेंट में
fun delayOnMainThread() {
    Handler(Looper.getMainLooper()).postDelayed({
        delayedFunction()
    }, 5000)
}

विधि 4: Thread.sleep (ब्लॉकिंग - सावधानी से उपयोग करें)

fun main() {
    println("शुरुआत")
    Thread.sleep(5000)  // वर्तमान थ्रेड ब्लॉक करता है
    delayedFunction()
    println("समाप्त")
}

विधि 5: पुनरावृत्ति टाइमर (Periodic)

import java.util.Timer

fun main() {
    val timer = Timer()
    
    // हर 2 सेकंड में चलाएं
    timer.scheduleAtFixedRate(0, 2000) {
        println("पुनरावृत्ति कार्य: ${System.currentTimeMillis()}")
    }
    
    Thread.sleep(10000)
    timer.cancel()
    println("टाइमर रद्द किया गया")
}

कोरआउट्स में उन्नत पैटर्न

रद्द करने योग्य देरी:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job = launch {
        try {
            delay(5000L)
            println("पूरा हुआ")
        } catch (e: CancellationException) {
            println("रद्द कर दिया गया!")
            throw e
        }
    }
    
    delay(2000)
    job.cancel()  // 2 सेकंड बाद रद्द करें
    job.join()
}

परिणाम के साथ देरी:

import kotlinx.coroutines.*

suspend fun fetchDataDelayed(): String {
    delay(3000L)
    return "डेटा लोड हुआ"
}

fun main() = runBlocking {
    val deferred = async { fetchDataDelayed() }
    println("प्रतीक्षा中...")
    val result = deferred.await()
    println("परिणाम: $result")
}

सारांश: कब क्या उपयोग करें?

विधिउपयोग का मामलाथ्रेड
Timer.scheduleसरल बैकग्राउंड कार्य, जावा इंटरऑपबैकग्राउंड थ्रेड
Coroutines delayआधुनिक Kotlin, सस्पेंड फंक्शंसकॉन्फ़िगरेबल (डिफ़ॉल्ट डिस्पैचर)
Handler.postDelayedएंड्रॉइड UI थ्रेड अपडेटमेन थ्रेड
Thread.sleepटेस्टिंग, सरल स्क्रिप्ट्स (ब्लॉकिंग)वर्तमान थ्रेड ब्लॉक करता है

निष्कर्ष

आधुनिक Kotlin कोड के लिए Coroutines पसंदीदा तरीका है। एंड्रॉइड UI कार्य के लिए `Handler` या `lifecycleScope`/`viewModelScope` के साथ कोरआउट्स का उपयोग करें।

  1. Android में देरी (Delay) कैसे सेट करें? Android में देरी (Delay) कैसे सेट करें?

    कुछ मामलों में, कुछ समय बाद UI को अपडेट करने की आवश्यकता होती है। यह उदाहरण दर्शाता है कि Android में देरी कैसे सेट करें। Handler का उपयोग करके देरी सेट करने का उदाहरण चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में एक नया प्रोजेक्ट बनाएं: File → New Project पर जाएं और आवश्यक विवरण भरें। चरण 2 - ल

  1. एंड्रॉइड में कॉल कैसे करें एंड्रॉइड में कॉल कैसे करें

    एंड्रॉइड में फोन कॉल करना यह गाइड संपर्कों से नंबर चुनकर या मैन्युअल रूप से दर्ज करके फोन कॉल शुरू करने को कवर करता है, जिसमें रनटाइम CALL_PHONE परमिशन को सही ढंग से संभाला जाता है। अनुमतियां <uses-permission android:name=android.permission.CALL_PHONE /> <!-- संपर्क चुनने के लिए वैकल्पिक -

  1. Android में देरी के बाद मेथड कैसे कॉल करें? Android में देरी के बाद मेथड कैसे कॉल करें?

    Handler से देरी के बाद कोड 실행 करना यह उदाहरण दर्शाता है कि Handler.postDelayed() का उपयोग करके निर्दिष्ट समय के बाद किसी मेथड को कैसे कॉल करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट (activity_main.xml) <?xml version=1.0 encoding=utf-8?> <Rela