এটি করার 3 টি উপায় রয়েছে:
নির্ধারিতথ্রেডপুলএক্সেকিউটার ব্যবহার করুন
আপনার থ্রেডের পুল দরকার নেই বলে কিছুটা ওভারকিলের প্রয়োজন
//----------------------SCHEDULER-------------------------
private final ScheduledThreadPoolExecutor executor_ =
new ScheduledThreadPoolExecutor(1);
ScheduledFuture<?> schedulerFuture;
public void startScheduler() {
schedulerFuture= executor_.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
//DO YOUR THINGS
pageIndexSwitcher.setVisibility(View.GONE);
}
}, 0L, 5*MILLI_SEC, TimeUnit.MILLISECONDS);
}
public void stopScheduler() {
pageIndexSwitcher.setVisibility(View.VISIBLE);
schedulerFuture.cancel(false);
startScheduler();
}
টাইমার টাস্ক ব্যবহার করুন
পুরানো অ্যান্ড্রয়েড স্টাইল
//----------------------TIMER TASK-------------------------
private Timer carousalTimer;
private void startTimer() {
carousalTimer = new Timer(); // At this line a new Thread will be created
carousalTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//DO YOUR THINGS
pageIndexSwitcher.setVisibility(INVISIBLE);
}
}, 0, 5 * MILLI_SEC); // delay
}
void stopTimer() {
carousalTimer.cancel();
}
হ্যান্ডলার এবং চলমানযোগ্য ব্যবহার করুন
আধুনিক অ্যান্ড্রয়েড স্টাইল
//----------------------HANDLER-------------------------
private Handler taskHandler = new android.os.Handler();
private Runnable repeatativeTaskRunnable = new Runnable() {
public void run() {
//DO YOUR THINGS
}
};
void startHandler() {
taskHandler.postDelayed(repeatativeTaskRunnable, 5 * MILLI_SEC);
}
void stopHandler() {
taskHandler.removeCallbacks(repeatativeTaskRunnable);
}
কার্যকলাপ / প্রসঙ্গ সহ অ-ফাঁস হ্যান্ডলার
আপনার অভ্যন্তরীণ হ্যান্ডলারের ক্লাস ঘোষণা করুন যা আপনার ক্রিয়াকলাপ / খণ্ড বিভাগে মেমরি ফাঁস করে না
/**
* Instances of static inner classes do not hold an implicit
* reference to their outer class.
*/
private static class NonLeakyHandler extends Handler {
private final WeakReference<FlashActivity> mActivity;
public NonLeakyHandler(FlashActivity activity) {
mActivity = new WeakReference<FlashActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
FlashActivity activity = mActivity.get();
if (activity != null) {
// ...
}
}
}
একটি রান রানযোগ্য হিসাবে ঘোষণা করুন যা আপনার ক্রিয়াকলাপ / খণ্ড বিভাগে আপনার পুনরাবৃত্ত কার্য সম্পাদন করবে
private Runnable repeatativeTaskRunnable = new Runnable() {
public void run() {
new Handler(getMainLooper()).post(new Runnable() {
@Override
public void run() {
//DO YOUR THINGS
}
};
আপনার ক্রিয়াকলাপ / খণ্ডে হ্যান্ডলার অবজেক্টটি সূচনা করুন (এখানে ফ্ল্যাশএকটিভিটি আমার ক্রিয়াকলাপ শ্রেণি)
//Task Handler
private Handler taskHandler = new NonLeakyHandler(FlashActivity.this);
নির্দিষ্ট সময়ের ব্যবধানের পরে কোনও কাজের পুনরাবৃত্তি করা
টাস্কহ্যান্ডলিআর.পোস্টডিলিয়েড (পুনরাবৃত্তিমূলক টাস্করুনেবল, ডিলে_মিলিস);
কাজের পুনরাবৃত্তি থামাতে
টাস্কহ্যান্ডলার
আপডেট: কোটলিনে:
//update interval for widget
override val UPDATE_INTERVAL = 1000L
//Handler to repeat update
private val updateWidgetHandler = Handler()
//runnable to update widget
private var updateWidgetRunnable: Runnable = Runnable {
run {
//Update UI
updateWidget()
// Re-run it after the update interval
updateWidgetHandler.postDelayed(updateWidgetRunnable, UPDATE_INTERVAL)
}
}
// SATART updating in foreground
override fun onResume() {
super.onResume()
updateWidgetHandler.postDelayed(updateWidgetRunnable, UPDATE_INTERVAL)
}
// REMOVE callback if app in background
override fun onPause() {
super.onPause()
updateWidgetHandler.removeCallbacks(updateWidgetRunnable);
}