खोज…


टिप्पणियों

एक हैंडलर को आसानी से समय की देरी के बाद कोड निष्पादित करने के लिए इस्तेमाल किया जा सकता है। यह हैंडलर.postDelayed () विधि को रननेबल के रन () विधि से फिर से कॉल करके निर्दिष्ट समय के बाद बार-बार कोड निष्पादित करने के लिए भी उपयोगी है।

विलंबित राशि के बाद कोड को निष्पादित करने के लिए हैंडलर का उपयोग करना

1.5 सेकंड के बाद निष्पादन कोड:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        //The code you want to run after the time is up
    }
}, 1500); //the time you want to delay in milliseconds

बार-बार कोड हर 1 सेकंड में:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        handler.postDelayed(this, 1000);
    }
}, 1000); //the time you want to delay in milliseconds

हैंडलरट्रेड्स और थ्रेड्स के बीच संचार

जैसा कि Handler के संदेश थ्रेड के लिए Message एस और Runnable एस भेजने के लिए उपयोग किया जाता है, यह Runnable धागों के बीच घटना आधारित संचार को लागू करना आसान है। हर थ्रेड में Looper होता है जो संदेशों को प्राप्त करने और संसाधित करने में सक्षम होता है। एक HandlerThread एक थ्रेड है जो इस तरह के Looper लागू करता है, उदाहरण के लिए मुख्य थ्रेड (यूआई थ्रेड) एक HandlerThread थ्रेड की विशेषताओं को लागू करता है।

वर्तमान थ्रेड के लिए हैंडलर बनाना

Handler handler = new Handler();

मुख्य थ्रेड (UI थ्रेड) के लिए हैंडलर बनाना

Handler handler = new Handler(Looper.getMainLooper());

एक थ्रेड से दूसरे थ्रेड को मुख्य थ्रेड पर भेजें

new Thread(new Runnable() {
    public void run() {
        // this is executed on another Thread

        // create a Handler associated with the main Thread
        Handler handler = new Handler(Looper.getMainLooper());

        // post a Runnable to the main Thread
        handler.post(new Runnable() {
            public void run() {
                // this is executed on the main Thread
            }
        });
    }
}).start();

एक हैंडलर को दूसरे हैंडलर के लिए बनाना और घटनाओं को भेजना

// create another Thread
HandlerThread otherThread = new HandlerThread("name");

// create a Handler associated with the other Thread
Handler handler = new Handler(otherThread.getLooper());

// post an event to the other Thread
handler.post(new Runnable() {
    public void run() {
        // this is executed on the other Thread
    }
});

हैंडलर को निष्पादन से रोकें

हैंडलर को निष्पादन से रोकने के लिए उसके अंदर चल रहे रननेबल का उपयोग करके उससे जुड़ी कॉलबैक को हटा दें:

Runnable my_runnable = new Runnable() {
    @Override
    public void run() {
        // your code here
    }
};

public Handler handler = new Handler(); // use 'new Handler(Looper.getMainLooper());' if you want this handler to control something in the UI
// to start the handler
public void start() {
    handler.postDelayed(my_runnable, 10000);
}

// to stop the handler
public void stop() {
    handler.removeCallbacks(my_runnable);
}

// to reset the handler
public void restart() {
    handler.removeCallbacks(my_runnable);
    handler.postDelayed(my_runnable, 10000);
}

एक टाइमर बनाने के लिए हैंडलर का उपयोग करें (javax.swing.Timer के समान)

यह उपयोगी हो सकता है यदि आप एक खेल या कुछ और लिख रहे हैं जो हर कुछ सेकंड में कोड का एक टुकड़ा निष्पादित करने की आवश्यकता है।

import android.os.Handler;

public class Timer {
    private Handler handler;
    private boolean paused;

    private int interval;

    private Runnable task = new Runnable () {
        @Override
        public void run() {
            if (!paused) {
                runnable.run ();
                Timer.this.handler.postDelayed (this, interval);
            }
        }
    };

    private Runnable runnable;

    public int getInterval() {
        return interval;
    }

    public void setInterval(int interval) {
        this.interval = interval;
    }

    public void startTimer () {
        paused = false;
        handler.postDelayed (task, interval);
    }

    public void stopTimer () {
        paused = true;
    }

    public Timer (Runnable runnable, int interval, boolean started) {
        handler = new Handler ();
        this.runnable = runnable;
        this.interval = interval;
        if (started)
            startTimer ();
    }
}

उदाहरण उपयोग:

Timer timer = new Timer(new Runnable() {
    public void run() {
        System.out.println("Hello");
    }
}, 1000, true)

यह कोड हर सेकंड "हैलो" को प्रिंट करेगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow