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

एंड्रॉइड में हैंडलर का उपयोग कैसे करें?

एंड्रॉइड में Handler - सही उपयोग और आधुनिक विकल्प

Handler एक लूपर से जुड़े थ्रेड पर चलने के लिए Runnable/Message को एनक्यू करता है। सामान्य उपयोग: मुख्य थ्रेड पर UI अपडेट शेड्यूल करना, विलंबित कार्य, या बैकग्राउंड थ्रेड से मुख्य थ्रेड पर पोस्ट करना।

मुख्य थ्रेड Handler (सबसे आम)

// गतिविधि/फ्रैगमेंट/व्यू में
private final Handler mainHandler = new Handler(Looper.getMainLooper());

// 2 सेकंड बाद चलाएं
mainHandler.postDelayed(() -> {
    textView.setText("अपडेट किया गया!");
}, 2000);

// बैकग्राउंड थ्रेड से मुख्य थ्रेड पर पोस्ट करें
ExecutorService bg = Executors.newSingleThreadExecutor();
bg.execute(() -> {
    String result = heavyWork();
    mainHandler.post(() -> uiTextView.setText(result));
});

Handler निर्माण - सर्वोत्तम अभ्यास

कंस्ट्रक्टरउपयोग-मामला
new Handler(Looper.getMainLooper())मुख्य थ्रेड पर पोस्ट करें (API 30+ स्पष्ट)
new Handler(Looper.myLooper())वर्तमान थ्रेड के लूपर पर पोस्ट करें (यदि लूपर तैयार है)
new Handler(backgroundLooper)समर्पित बैकग्राउंड थ्रेड पर पोस्ट करें
new Handler() (नो-आर्ग)डिप्रिकेट — निहित लूपर भ्रम पैदा करता है

जीवनचक्र-संवेदनशील सफाई

@Override
protected void onDestroy() {
    super.onDestroy();
    mainHandler.removeCallbacksAndMessages(null); // लीक/क्रैश रोकें
}

या ViewModel + viewModelScope (कोरआउटिन) का उपयोग करें जो स्वचालित रूप से रद्द हो जाता है।

आधुनिक विकल्प (Handler को प्राथमिकता दें)

lifecycleScope.launchWhenStarted { ... }
APIउपयोग-मामलालाभ
viewModelScope.launch { delay(2000); updateUI() }ViewModel में विलंबित UI कार्यजीवनचक्र-जागरूक, स्वचालित रद्दीकरण, संरचित समवर्तीता
जीवनचक्र-जागरूक कोरआउटिनकेवल तब चलता है जब जीवनचक्र STARTED हो
Handler(Looper.getMainLooper()).postDelayedत्वरित एक-ऑफ UI विलंबसरल, कोई कोरआउटिन सेटअप नहीं
WorkManagerस्थायी/पृष्ठभूमि कार्य (सिंक, अपलोड)डोज़/स्टैंडबाई से बचता है, पुनः प्रयास नीति
RxJava Observable.timerरिएक्टिव स्ट्रीम में विलंबकंपोजेबल, बैकप्रेशर

मूल उदाहरण की समीक्षा

मूल कोड एक Timer + TimerTask + आंतरिक Handler + runOnUiThread + एक और लीक होने वाला Timer ऑब्जेक्ट बनाता था — अत्यधिक जटिल और लीक-प्रवण। एक एकल Handler (या कोरआउटिन) पर्याप्त है।

सारांश

  • मुख्य-थ्रेड UI विलंब/पोस्ट के लिए Handler(Looper.getMainLooper()) का उपयोग करें।
  • onDestroy में removeCallbacksAndMessages(null) के साथ हमेशा साफ करें।
  • नए कोड के लिए, **कोरआउटिन + viewModelScope/lifecycleScope** को प्राथमिकता दें — वे सुरक्षित, पठनीय और जीवनचक्र-जागरूक हैं।
  • दोहराने वाले UI कार्यों के लिए Timer का उपयोग न करें; Handler.postDelayed या PeriodicWorkRequest का उपयोग करें।
  1. एंड्रॉइड में ViewFlipper का उपयोग कैसे करें? एंड्रॉइड में ViewFlipper का उपयोग कैसे करें?

    एंड्रॉइड में ViewFlipper के साथ व्यू फ्लिपिंग एनिमेशन यह ट्यूटोरियल ViewFlipper का उपयोग करके व्यूज़ के बीच एनिमेटेड ट्रांजिशन बनाने का तरीका दिखाता है, जिसमें ऑटो-फ्लिपिंग और मैनुअल नेविगेशन शामिल है। लेआउट (activity_main.xml) <RelativeLayout xmlns:android=https://schemas.android.com/apk/res/an

  1. Android में Snackbar का उपयोग कैसे करें? Android में Snackbar का उपयोग कैसे करें?

    परिचय Snackbar Material Design का एक घटक है जो स्क्रीन के निचले भाग में एक संक्षिप्त संदेश दिखाता है। यह उदाहरण Snackbar के बुनियादी उपयोग और अनुकूलन को दर्शाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.

  1. Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें? Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें?

    परिचय NavigationView मटेरियल डिज़ाइन का साइड नेविगेशन ड्रॉअर (हैमबर्गर मेनू) है। यह DrawerLayout के अंदर होता है और मेनू आइटम्स, हेडर, और नेविगेशन हैंडलिंग प्रदान करता है। यह ट्यूटोरियल Navigation Components के साथ आधुनिक सेटअप दिखाता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में Fi