runOnUiThread در برنامه نویسی اندروید
سلام توسعه دهندگان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش runOnUiThread در برنامه نویسی اندروید از کلاس runOnUiThread در اندروید به منظور آپدیت کردن UI یا User Interface یا هر چیز گرافیکی در اکتیویتی استفاده می شود در ادامه با ما همراه باشید تا نحوه استفاده درست از از کلاس / متد runOnUiThread در اندروید را یاد گیرید.
در runOnUiThread یک ترد (Thread) گرافیکی است به صورت پیشفرض اگر بخواهیم از ترد معمولی اندروید به منظور آپدیت بخش گرافیکی در اکتیویتی بپردازیم با خطا مواجه می شویم چون Thread گرافیکی با ترد معمولی تفاوت های بسیاری دارد به همین منظور از runOnUiThread در برنامه نویسی اندروید به منظور تغییر گرافیکی در صفحه استفاده می شود.
در ادامه مثال ساده و همراه با Body خالی متد/کلاس runOnUiThread را مشاهده می کنید.
1 2 3 4 5 | runOnUiThread(new Runnable() { void run() { // Do stuff… } }); |
بدنه کدی که می خواهیم اجرا شود و تغییر گرافیکی مثلا متن دکمه را تغییر دهید یا رنگ دکمه را تغییر دهد را در آن قرار میدهیم استفاده بیش از حد از ترد گرافیکی در اندروید سبب کاهش سرعت برنامه در طول کار می شود.
در ادامه یک مثال ساده از runOnUiThread برای شما قرار دادیم فقط در کد زیر ابتدا در Layout خود یک دکمه قرار دهید سپس آن را find کرده نام آن را btn گذشته و در نهایت متد زیر را صدا بزنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private void runThread() { new Thread() { public void run() { while (i++ < 1000) { try { runOnUiThread(new Runnable() { @Override public void run() { btn.setText("#" + i); } }); Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } |
در بالا متن دکمه هر 300 میلی ثانیه یکبار تغییر می کند.
در مواردی که می خواهید یک کار فوق العاده سنگین گرافیکی را پشت سرهم انجام دهید از looper استفاده کنید همانند زیر .
1 2 3 4 5 | new Handler(Looper.getMainLooper()).post(new Runnable() { public void run() { AndroidBasicThreadActivity.textView.setText("Hello!! Android Team :-) From child thread."); } }); |
کد بالا برای کارهای گرافیکی سنگین توصیه می شود.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
درود و تشکر بابت مطالب مفیدتون در رابطه با اندروید واقعا کمک کنندست… میخاستم بدونم ران کردن توی این ترد چ فایده ای داره و اگ ی مثال کاربردی میزدید خیلی عالی میشد، فک نکنم چون نیاز باشه واسه تغییر تکست باتن از ترد استفاده کرد
سلام
در نظر بگیرید شما می خواید در یک asynctask این کار رو انجام بدید اون موقع شما باید از آن استفاده کنید.
موفق و پیروز باشید.
سلام من میخواستم یه برنامه بسازم که یه ویجت داشته باشه و یه دیتابیس
ویجت متن های توی دیتابیس رو نشون بده
یعنی هر متن ۲۴ ساعت یک بار تغییر کنه
ممنون میشم کمکم کنید یا یه اموزش بهم معرفی کنید