تایتل قالب طراحی سایت سئو قالب بیان
این جهان ، جهان تغییر است نه تقدیر...


اگر یک برنامه نویس اندروید باشید حتما نیاز پیدا کردید که یک عملیات را در فاصله زمانی مختفلی مرتب تکرار کنید.

khanbeiki_image_13
برای این کار باید از TimerTask یا Handler استفاده کنید. استفاده از هر کدام بسیار یاده میباشد .


final Handler updateHandler = new Handler();
 
Runnable runnable = new Runnable() {
  public void run() {
    mTextMessage.setText(R.string.title_android);
    updateHandler.postDelayed(this, 1); // determines the execution interval
  }
};
updateHandler.post(runnable);


new Timer().schedule(new TimerTask() {
  @Override
  public void run() {
    runOnUiThread(new Runnable() {
      @Override
      public void run() {
        mTextMessage.setText(R.string.title_android);
      }
    });
  }
}, 0, 1);



اما مسئله اصلی این مطلب این است که کدام بهتر و بهینه تر میباشد.

Handler


Timer



چیزی ک در تصویر میبینید مصرف زیاد CPU در Timer میباشد که خود دلیل خوبیست که از این متد برای مصراف طولانی مدت استفاده نکنید.

Timer کلاس انتخابی خوبی برای اندروید نیست و بهتر است برای حلفه های طولانی از handler استفاده کنید.

عیب های Timer :

UI را نمیتواند بروز کند
حافظه را اشغال میکند و onLowMemory فراخوانی میشود
غیرقابل اعتماد است و همیشه کار نمیکند ، بعنوان مثال وقتی ساعت گوشی کاربر تغییر کند ، Timer  شما از کار می افتد
در سرویس هار طولانی مدت دخالت میکند و باعث از کار افتادن میشود.


نظرات (۳)

  • نسترن یکتا
    شنبه ۱۰ شهریور ۹۷ , ۱۶:۱۵
    سلام آقای khanbeiki
    یسوال داشتم. ممنون میشم کمکم کنین. مرسی. خیلی جاها گشتم. بلاگ شما رو دیدم و اینکه دیدم زود به زود مطلب میذارین. اینشد که گفتم ازتون مشورت بگیرم. ممنونم.
    یه پروژه دارم که اگر بشه براش دنبال شریک هستم.
    در مورد یادآوری و آلارم و اینجورچیزاست.

    اینکه در ساعاتی خاص، چیزهایی رو یادآوری کنه.
    شما وقت دارین که با هم بیشتر صحبت کنیم؟
    • author avatar
      مسلم خان بیکی
      ۲۲ شهریور ۹۷، ۱۷:۲۶
      سلام با من در تماس باشید 
      s.khanbeiki@gmail.com
      09119009338
  • رضا
    سه شنبه ۸ آبان ۹۷ , ۱۶:۴۷
    سلام
    ممنون از مطلب خوبتون . من چند وقت پیش مجبور بودم بین این دوتا یکی رو انتخاب کنم و چون timer اسمش روش بود اول از تایمر استفاده کردم ولی اصلا و به هیچ وجه خوب نبود و خیلی وقت ها اصلا اجرا نمیشد . کلا handler خیلی برای من مناسبتر بود.
    ممنون که تجربیاتتون رو به اشتراک میزارید اگه زودتر این مطلب رو خونده بودم حداقل دو روز توی وقتم صرفه جویی میشد
  • علیرضا مقدم
    دوشنبه ۶ ارديبهشت ۰۰ , ۱۶:۲۵

    درود

    بسیار خوب است. آزمایش کردم.

    سپاس

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی