जवाबों:
एंड्रॉइड के साथ हमेशा ऐसा करने के बहुत सारे तरीके होते हैं, लेकिन यह मानते हुए कि आप कोड के एक टुकड़े को थोड़े समय बाद उसी धागे पर चलाना चाहते हैं, मैं इसका उपयोग करता हूं:
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
Log.i("tag", "This'll run 300 milliseconds later");
}
},
300);
.. यह बहुत ज्यादा के बराबर है
setTimeout(
function() {
console.log("This will run 300 milliseconds later");
},
300);
MyActivityName.this.myFunctionOnActivity()
Handler timeout = new Handler(); final Runnable r = new Runnable{...}; timeout.postDelayed(r, 300);
और यदि आप इसे रद्द करना चाहते हैं:timeout.removeCallbacks(r);
setInterval ()
हर n मिलीसेकंड में खुद को दोहराने वाला फंक्शन
जावास्क्रिप्ट
setInterval(function(){ Console.log("A Kiss every 5 seconds"); }, 5000);
अनुमानित जावा समतुल्य
new Timer().scheduleAtFixedRate(new TimerTask(){
@Override
public void run(){
Log.i("tag", "A Kiss every 5 seconds");
}
},0,5000);
setTimeout ()
फ़ंक्शन जो n मिलीसेकंड के बाद ही काम करता है
जावास्क्रिप्ट
setTimeout(function(){ Console.log("A Kiss after 5 seconds"); },5000);
अनुमानित जावा समतुल्य
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
Log.i("tag","A Kiss after 5 seconds");
}
}, 5000);
scheduleAtFixedRate
गतिविधि के समाप्त होने के बाद विधि के लिए, आप गतिविधि के भीतर टाइमर को कैसे रद्द करते हैं?
यदि आप अपने फोन को जगाने या मृतकों से अपने ऐप को वापस लाने के बारे में चिंतित नहीं हैं, तो प्रयास करें:
// Param is optional, to run task on UI thread.
Handler handler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
// Do the task...
handler.postDelayed(this, milliseconds) // Optional, to repeat the task.
}
};
handler.postDelayed(runnable, milliseconds);
// Stop a repeating task like this.
handler.removeCallbacks(runnable);
आप वास्तव में क्या हासिल करना चाहते हैं इसके आधार पर, आपको एंड्रॉइड हैंडलर पर एक नज़र रखना चाहिए:
http://developer.android.com/reference/android/os/Handler.html
यदि आपने पहले भविष्य में चलाने के लिए किसी कार्य को शेड्यूल करने के लिए जावास्क्रिप्ट सेटटाइमआउट () आदि का उपयोग किया था, तो यह करने का एंड्रॉइड तरीका है (पोस्टडेलएड / सेंडमैसेजडेलएड)।
ध्यान दें कि न तो हैंडलर या टाइमर नींद मोड से एक एंड्रॉइड फोन को जगाते हैं। दूसरे शब्दों में, यदि आप स्क्रीन को बंद / सीपीयू सोते हुए भी वास्तव में कुछ करने के लिए शेड्यूल करना चाहते हैं, तो आपको अलार्म मैनजर की भी जांच करने की आवश्यकता है।
मुझे जावास्क्रिप्ट के बारे में ज्यादा जानकारी नहीं है, लेकिन मुझे लगता है कि टाइमर वही हो सकता है जो आप खोज रहे हैं।
http://developer.android.com/reference/java/util/Timer.html
लिंक से:
एक-शॉट को एक निरपेक्ष समय पर या एक रिश्तेदार देरी के बाद चलाने के लिए निर्धारित किया जाता है। आवर्ती कार्यों को एक निश्चित अवधि या एक निश्चित दर के साथ निर्धारित किया जाता है।
पहला उत्तर निश्चित रूप से सही उत्तर है और मैंने इस लैम्बडा संस्करण को बंद कर दिया है, जो वाक्य रचना में बहुत छोटा है। चूंकि रननेबल में केवल 1 ओवरराइड विधि है "रन ()", हम एक लैम्ब्डा का उपयोग कर सकते हैं:
this.m_someBoolFlag = false;
new android.os.Handler().postDelayed(() -> this.m_someBoolFlag = true, 300);
import java.util.Timer;
import java.util.TimerTask;
class Clock {
private Timer mTimer = new Timer();
private int mSecondsPassed = 0;
private TimerTask mTask = new TimerTask() {
@Override
public void run() {
mSecondsPassed++;
System.out.println("Seconds passed: " + mSecondsPassed);
}
};
private void start() {
mTimer.scheduleAtFixedRate(mTask, 1000, 1000);
}
public static void main(String[] args) {
Clock c = new Clock();
c.start();
}
}
यहां एक सेटटाइमआउट समतुल्य है, जो अधिकतर देरी के बाद यूजर इंटरफेस को अपडेट करने की कोशिश में उपयोगी है।
जैसा कि आप जानते हैं, यूजर इंटरफेस को अपडेट केवल UI थ्रेड से किया जा सकता है। AsyncTask करता है कि आप उस धागे से इसकी onPostExecute विधि को कॉल करके।
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Update the User Interface
}
}.execute();
onProgressUpdate()
अनुकरण करने के लिए भी इस्तेमाल किया जा सकता है setInterval()
। 2. AsyncTask
एक थ्रेड पूल (या सिर्फ एक धागा) पर चलता है, इसलिए ए। यह एक और AsyncTask
खत्म होने तक इंतजार करना पड़ सकता है ; b । यह पूल से एक धागा लेगा।
मैं Android के लिए एक एमपी 3 प्लेयर बना रहा था, मैं हर 500ms में वर्तमान समय को अपडेट करना चाहता था इसलिए मैंने इसे इस तरह से किया
private void update() {
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
long cur = player.getCurrentPosition();
long dur = player.getDuration();
currentTime = millisecondsToTime(cur);
currentTimeView.setText(currentTime);
if (cur < dur) {
updatePlayer();
}
// update seekbar
seekBar.setProgress( (int) Math.round((float)cur / (float)dur * 100f));
}
}, 500);
}
जो एक ही विधि को पुनरावर्ती कहता है