Kotlin में विलंब के साथ फ़ंक्शन कैसे कॉल करें: कोड के साथ पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आपको अभी इसकी आवश्यकता क्यों है

\n

कल्पना करें: आप एक ऐप लिख रहे हैं, और आपको बटन दबाने के 5 सेकंड बाद उपयोगकर्ता को एक सूचना दिखानी है। या उपयोगकर्ता द्वारा टेक्स्ट टाइप करना समाप्त करने के केवल 2 सेकंड बाद सर्वर पर अनुरोध करना है। या बस विलंब के साथ एक सुंदर एनिमेशन बनाना है। Kotlin में विलंब के साथ फ़ंक्शन कॉल करने की क्षमता के बिना — कहीं नहीं जा सकते।

\n

यह प्रश्न Stack Overflow पर सबसे लोकप्रिय में से एक है (हज़ारों व्यूज़!), और यह व्यर्थ नहीं है। Kotlin में विलंबित कॉल करने के पूरे 4 तरीके हैं, और प्रत्येक अपनी स्थिति के लिए उपयुक्त है। इस लेख में हम उन सभी पर चर्चा करेंगे: कोरूटीन में सरल delay() से लेकर Android के लिए क्लासिक Handler तक। आप जानेंगे कि कौन सा तरीका चुनना है और क्यों, और सबसे महत्वपूर्ण बात — आप कार्यशील कोड देखेंगे जिसे आप सीधे अपने प्रोजेक्ट में कॉपी कर सकते हैं।

\n\n

तरीका 1: कोरूटीन और delay() (आधुनिक और पसंदीदा)

\n

यह आधुनिक Kotlin में सबसे सुंदर और अनुशंसित तरीका है। कोरूटीन हल्के थ्रेड हैं जो मुख्य थ्रेड को ब्लॉक नहीं करते हैं। delay() विधि निर्दिष्ट समय के लिए कोरूटीन को रोकती है, और फिर इसे फिर से शुरू करती है।

\n

कोरूटीन के साथ काम करने के लिए build.gradle.kts में निर्भरता जोड़नी होगी:

\n
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
\n

और कोड में यह इस तरह दिखता है:

\n
import kotlinx.coroutines.*\n\nfun main() = runBlocking {\n    println("शुरू: ${System.currentTimeMillis()}")\n\n    // विलंब के साथ कोरूटीन शुरू करें\n    launch {\n        delay(3000L) // 3 सेकंड प्रतीक्षा करें\n        println("3 सेकंड बीत गए: ${System.currentTimeMillis()}")\n        myDelayedFunction() // आवश्यक फ़ंक्शन कॉल करें\n    }\n\n    println("प्रतीक्षा कर रहे हैं... (यह तुरंत निष्पादित होगा)")\n}\n\nfun myDelayedFunction() {\n    println("फ़ंक्शन निष्पादित हुआ!")\n}
\n

महत्वपूर्ण: delay() एक रोकने वाला फ़ंक्शन (suspend function) है। इसे केवल कोरूटीन या किसी अन्य suspend-फ़ंक्शन के अंदर ही कॉल किया जा सकता है। यदि आप कोरूटीन के बाहर delay() कॉल करने का प्रयास करते हैं, तो कंपाइलर एक त्रुटि देगा।

\n\n

Android में कोरूटीन के साथ विलंबित कॉल कैसे करें

\n

Android डेवलपमेंट में, कोरूटीन डी-फैक्टो मानक हैं। Activity के लिए एक उदाहरण:

\n
import androidx.appcompat.app.AppCompatActivity\nimport android.os.Bundle\nimport kotlinx.coroutines.*\n\nclass MainActivity : AppCompatActivity() {\n\n    private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n\n        // 2 सेकंड बाद टोस्ट दिखाएं\n        scope.launch {\n            delay(2000L)\n            showToast("2 सेकंड बीत गए!")\n        }\n    }\n\n    private fun showToast(message: String) {\n        android.widget.Toast.makeText(this, message, android.widget.Toast.LENGTH_SHORT).show()\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n        scope.cancel() // Activity नष्ट होने पर सभी कार्य रद्द करें\n    }\n}
\n

ध्यान दें: हम UI के साथ काम करने के लिए Dispatchers.Main का उपयोग कर रहे हैं। और मेमोरी लीक से बचने के लिए onDestroy() में scope को रद्द करना सुनिश्चित करें।

\n\n

तरीका 2: Handler और postDelayed() (Android की क्लासिक)

\n

यदि आप Android के लिए लिख रहे हैं और कोरूटीन का उपयोग नहीं करना चाहते (या नहीं कर सकते), तो पुराना विश्वसनीय Handler अभी भी काम करता है। कोरूटीन के युग से पहले यह तरीका लोकप्रिय था।

\n
import android.os.Bundle\nimport android.os.Handler\nimport android.os.Looper\nimport androidx.appcompat.app.AppCompatActivity\n\nclass MainActivity : AppCompatActivity() {\n\n    private val handler = Handler(Looper.getMainLooper())\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)                

ब्लॉग

पुस्तक अनुशंसाएँ