উত্তর:
অ্যান্ড্রয়েডের মতো সর্বদা এটি করার প্রচুর উপায় রয়েছে তবে ধরে নিই যে আপনি কেবল একই থ্রেডে কিছুটা পরে কোডের একটি অংশটি চালাতে চান, আমি এটি ব্যবহার করি:
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 ()
ফাংশন যা প্রতি এন মিলিসেকেন্ডে নিজেকে পুনরাবৃত্তি করে
জাভাস্ক্রিপ্ট
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
আপনি যদি ভবিষ্যতে কোনও কাজের সময় নির্ধারণের জন্য জাভাস্ক্রিপ্ট সেটটাইমআউট () ইত্যাদি ব্যবহার করেন তবে এটি করার Android পদ্ধতি এটি (পোস্টডিলাইড / সেন্ডমেসেজডেলিড)।
নোট করুন যে হ্যান্ডলার বা টাইমার উভয়ই অ্যান্ড্রয়েড ফোনটিকে স্লিপ মোড থেকে জাগ্রত করে না। অন্য কথায়, আপনি যদি স্ক্রিনটি বন্ধ / সিপিইউ ঘুমিয়ে থাকা সত্ত্বেও বাস্তবে কিছু হওয়ার জন্য কিছু নির্ধারণ করতে চান তবে আপনাকে অ্যালার্ম ম্যানেজারটিও পরীক্ষা করে দেখতে হবে।
আমি জাভাস্ক্রিপ্ট সম্পর্কে খুব বেশি কিছু জানি না তবে আমি মনে করি টাইমার্স আপনি যা খুঁজছেন তা হতে পারে।
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();
}
}
এখানে একটি সেটটাইমআউট সমতুল্য, বিলম্বের পরে ইউজার ইন্টারফেস আপডেট করার চেষ্টা করার সময় বেশিরভাগ ক্ষেত্রে কার্যকর।
আপনি যেমন জানেন যে ইউজার ইন্টারফেসটি আপডেট করা কেবলমাত্র ইউআই থ্রেড থেকে করা সম্ভব। অ্যাসিঙ্কটাস্ক সেই থ্রেড থেকে এটির পোস্টপ্যাকসেকিউট পদ্ধতিতে কল করে আপনার জন্য তা করে।
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()
। ২. AsyncTask
একটি থ্রেড পুলে চালিত হয় (বা কেবল একটি এক থ্রেড), তাই ক। এটি অন্য AsyncTask
শেষ না হওয়া পর্যন্ত অপেক্ষা করতে হতে পারে ; খ । এটি পুল থেকে একটি থ্রেড গ্রহণ করবে।
আমি অ্যান্ড্রয়েডের জন্য একটি এমপি 3 প্লেয়ার তৈরি করছিলাম, আমি বর্তমান সময়ের প্রতি 500 মিমি আপডেট করতে চেয়েছিলাম তাই আমি এটির মতো করেছিলাম
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);
}
যা একই পদ্ধতিটিকে পুনরাবৃত্তি বলে