TimerTask انجام کاری به صورت دوره ای
يكشنبه, ۲۷ شهریور ۱۴۰۱، ۱۲:۲۰ ب.ظ
کاری را که باید به صورت دورهای انجام گیرد را در یک کلاس می نویسیم:
public class MyTaskClass extends TimerTask { public void run () { // doSomething (); // کاری که باید انجام شود را اینجا می نویسیم. } }
سپس در برنامه اصلی جایی که باید این وظیفه دورهای آغاز به کار کند (مثلا در بخش main) خط زیر را می نویسیم:
new Timer().schedule (new MemoryFreeUpTaskClass (), 0, 1000);
البته خط بالا خلاصه است و بهتر است خط بالا را به صورت سه خط زیر نوشت:
// تعریف به صورت یک فیلد Timer myTimerObject = new Timer (); // روشن کردن تایمر تسک MyTaskClass myTaskObject = new MyTaskClass (); myTimerObject.schedule ( myTaskObject , 0 , 1000 ); // هر هزار میلی ثانیه یک بار تابع ران را اجرا کن
چرا؟ برای این که خاموش کردن تایمر معمولا در جایی متفاوت انجام می گیرد بنابر این باید تعریف تایمر در کلاس بالاتر (اصلی) باشد تا بتوان از دو جای متفاوت آن را روشن و خاموش کرد.
روش خاموش کردن تایمر:
myTimerObject .cancel (); // رها کردن تایمر myTimerObject .purge (); // صفر کردن مقدار تایمر
دوباره روشن کردن تایمر:
MyTaskClass myTaskObject = new MyTaskClass (); myTimerObject.schedule ( myTaskObject , 0 , 1000 );
۰۱/۰۶/۲۷