هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

دوره آموزش برنامه نویسی اندروید
آموزش تایمر در اندروید

آموزش تایمر در اندروید

سلام دوستان این بار با آموزش تایمر در اندروید بازگشتیم این آموزش هر چند دیده نمی شود ولی کارایی بسیار بالایی دارد.خب برویم به سراغ بخش کد برنامه شیرین ترین بخش ! 🙂

ابتدا یک object  از تایمر ایجاد کرده سپس باید یک TimerTask برای زمان بندی تایمر ایجاد شده ایجاد کنیم بعد از آن یک void ایجاد کرده سپس در این void که از نام آن run است را اجرا می کنیم و در اخر بعد از بسته شدن void زمان زمانی بندی کردن تایمر ایجاد شده می کنیم برای این کار از ویژگی Schedule (به معنی زمان بندی) را فراخوانی کرده و در آخر “زمان” را برای تایمر ست می کنیم تایمر را باید به میلی ثانیه بدهیم به طور مثال یک ثانیه برابر است با ۱۰۰۰ میلی ثاینه .

شاید بخواهید یک تایمر تکرار ایجاد کنید برای این کار می توانیم از کد زیر استفاده کنیم.

کد بالا نیز شبیه کد قبلی است با این تفاوت که این تایمر ۱۰۰۰ بار اجرا می شود یعنی بعد از هر یک ثانیه تا ۱۰۰۰ بار اجرا می شود.

برویم به سراغ شمارنده (counter) معکوس به کد زیر نگاه کنید.

 

از کد بالا برای ایجاد تایمر معکوس استفاده کنیم و کنترلی بیشتری نسبت به تایمر های قبلی داریم به این صورت که در صورت تموم شدن این تایمر پیغام Done نمایش داده می شود.

این بخش مخصوص تایمر است ولی گفتم شاید بعضی از دوستان به کد زیر نیاز داشته باشند کد زیر یه کار به صورت پشت سر هم بعد از یک فاصله زمانی احرا کند.به طور مثال می خواهید اینترنت را هر ۱۵ ثانیه یک بار چک کنید برای این کار می توانید از کد زیر استفاده کنید.

کد بالا بعد از فاصله زمانی یک ثانیه ای یک دکد را اجرا می کند ولی استفاده بیش از حد از کد بالا سبب memory leak می شود.

استفاده از کد بالا به صورت ساده شده مانند زیر

کدی قوی تر از کد های بالا کد زیر از api ورژن ۱ تا ۲۴ کار می کند و کد قدرتمندی است.

کد بالا بعد هر ۵ ثاینه یک کار را انجام می دهد.

در صورت استفاده از کد بالا ممکن است به ارور بر بخورید زیرا کد های بالا در یک ترد دیگر است به طور مثال اگر بخواهید مقدار متن یک دکمه را تغییر دهید باید از RunOnUiThread استفاده کنید همانند زیر

کد های مختلفی از این دست برای تایمر وجود دارد همانند زیر

آموزش به اتمام رسید انشاالله مفید بوده باشد.

 

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۱۰ )

  1. محمد
    ۱۲, مهر , ۱۳۹۶ در ۸:۲۵ ق.ظ

    فوق‌العاده بود
    خیلی ممنون

  2. سعید
    ۲۸, آذر , ۱۳۹۶ در ۲:۴۱ ب.ظ

    خیلی کلی و مبهم بود

  3. o0arash0o
    ۱۸, اردیبهشت , ۱۳۹۷ در ۱۰:۰۷ ق.ظ

    سلام مثل همیشه عالی فقط اگر بخوایم تایمی که داره میگذره رو نمایش بدیم چطور؟؟

    • محمد حسین جعفری پور
      ۱۸, اردیبهشت , ۱۳۹۷ در ۶:۱۰ ب.ظ

      سلام و درود برای اینکار می توانید از این کد استفاده کنید.

      فقط باید متد بالا را در یک Thread قرار دهید تا هر یک ثانیه یکبار انجام شود یعنی مثل زیر

      موفق باشید.

  4. محمدرضا
    ۱۷, مرداد , ۱۳۹۷ در ۳:۵۷ ب.ظ

    عالی بود ممنون فقط ی سؤال ک چرا بیشتر کدها تو API 21+ کار نمیکنن؟؟
    Timer timer = new Timer();
    TimerTask t = new TimerTask() {
    int sec = 0;
    @Override
    public void run() {
    }
    };
    timer.scheduleAtFixedRate(t,1000,1000
    کد بالا رو وقتی اجرا میکردم برنامه کرش میشد.کدی مثل همین نیست که در api +21 یک سری کد رو براساس زمان داده شده(مثلا هزاربار) اجرا کنه؟؟

    • محمد حسین جعفری پور
      ۱۸, مرداد , ۱۳۹۷ در ۱۲:۴۰ ق.ظ

      سلام و درود
      نباید مشکلی داشته باشد کد خطا را قرار دهید تا بررسی کنیم یک try و catch براش بزارید ببیند در بخش log چه چیزی دریافت می کنید.

      موفق باشید.

  5. محسن
    ۱, شهریور , ۱۳۹۷ در ۴:۳۷ ب.ظ

    با سلام

    میخواستم کد تایم معکوس بالا رو به دقیقه ای تغییر بدم مثلا بجای اینکه ۱۲۰ ثانیه رو از ۱۲۰ ثانیه شروع کنه(۱۱۸٫۱۱۹٫۱۲۰و…) از دقیقه ی ۱:۵۹ شروع کنه(۱:۵۸٫۱:۵۹٫۱:۵۹و…) ممنون میشم کمکم کنید.

    • محمد حسین جعفری پور
      ۱, شهریور , ۱۳۹۷ در ۱۱:۱۸ ب.ظ

      سلام و دورد
      چیزی که می خواهید یک مسئله ساده ریاضی است هر ساعت ۶۰ دقیقه است هر ساعت ۳۶۰۰ ثانیه است هر ساعت ۶۰ دقیقه است به ۳ if ساده می توانید پیاده سازی کنید.

      موفق باشید.

  6. ۳۱, فروردین , ۱۳۹۸ در ۴:۴۳ ب.ظ

    سلام می خواهم وقتی گوشی خاموش و روشن میشه تایمر قطع نشه چجوری کدش رابنویسم؟

  7. amir
    ۲۸, مرداد , ۱۳۹۸ در ۱۲:۱۴ ب.ظ

    با سلام یه سرویس نوشتم میخوام هر ۲۴ ساعت یه نوتیفیکیشن بزنه . از کلاس CountDownTimer استفاده میکنم ولی فقط برای پایین تر از یک ساعت جواب میده و درست کار میکنه به نظرتون زمان ۲۴ ساعت از چه کلاسی استفاده کنم و بهش بدم تا ۲۴ساعت وقفه ایجاد کنه؟