آموزش Thread در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش Thread در برنامه نویسی اندروید می پردازیم ابتدا بهتر است Thread را معرفی کنیم سپس وارد بخش کد نویسی شویم .
شاید بعضی وقت ها نیاز باشد تا ما کاری را در background انجام دهیم و کاربر را با آن درگیر نکینم یعنی نیازی به صبر کاربر نباشد و کاربران بتواند کارهای دیگر را با اپلیکیشن انجام دهد .تعریفی که گوگل برای Thread قرار داده است : زمانی که اپلیکیشن را اجرا می کنیم main thread یا ترد اصلی اجرا می شود ترد اصلی تمامی بخش های UI را اجرا می کند (به نمایش در می آورد) و اگر بخواهیم یک کار بسیار طولانی را انجام دهیم که به UI احتیاج ندارد ترد آن وظیفه را در پس زمینه اجرا می کند.
نحوه ایجاد یک Thread در اندروید
1 2 3 4 5 6 7 | new Thread(new Runnable() { public void run() { for(int i = 1; i < 5;i++) { System.out.println(i); } } }).start(); |
حال اگر بخواهیم یک قسمت از Ui را آپدیت کنیم به طور مثال مقدار متن یک TextView را تغییر دهیم باید آن را بروی runOnUiThread (اجرا بروی ترد واسط کاربری) اجرا کنیم اگر این کار نکنیم برنامه Force close می دهد.
نمومنه آن را در پایین می توانید ببینید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class MainActivity extends AppCompatActivity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.my_text_view); new Thread(new Runnable() { @Override public void run() { while (true) { Random r = new Random(); if (r.nextInt(100) == 42) { break; } } runOnUiThread(new Runnable() { @Override public void run() { mTextView.setText("Ready Player One"); } }); } }).start(); } } |
پس هر زمانی که خواستیم یک بخش از Ui را در آن تغییر ایجاد کنیم از طریق ترد باید در runOnUiThread اجرا شود.
کار کد بالا ابتدا یک عدد random در ترد ایجاد می کند سپس در UIThread آن را در TextView ست می کند.(ابتدا یک Textview در layout خود قرار دهید سپس آیدی آن را برابر با my_text_view قرار دهید و این کد را تست کنید ).
این هم از آموزش بخش ترد در برنامه نویسی اندروید.
موفق باشید.
سلام من طبق کد با از runOnUiThread استفاد کردم می خواستم تغییرم تی چند ثانیه اجرا شه ولی هر کاری که کرد م نشد یعنی برنامه بعد از تموم شدن حلقه توی runOnUiThread بالا میاد
نظری ندارین ؟
Автосалон Митсубиши Авто в городе Барнаул предлагает
быстро и дорого. Выкуп проходит в день осмотра, приезжаем на место осмотра через 30 минут после звонка. Мы осуществляем срочный выкуп авто в Барнауле и Алтайском крае.
Впервые с начала спецоперации в украинский порт приплыло иностранное торговое судно под погрузку. По словам министра, уже через две недели планируется выползти на уровень по меньшей мере 3-5 судов в сутки. Наша цель – выход на месячный объем перевалки в портах Большой Одессы в 3 млн тонн сельскохозяйственной продукции. По его словам, на сборе в Сочи президенты трындели поставки российского газа в Турцию. В больнице актрисе передали о работе медицинского центра во время военного положения и передали подарки от малышей. Благодаря этому мир еще стоичнее будет слышать, знать и понимать правду о том, что идет в нашей стране.
Впервые с начала конфликта в украинский порт приплыло иностранное торговое судно под погрузку. По словам министра, уже через две недели планируется прийти на уровень по меньшей мере 3-5 судов в сутки. Наша задача – выход на месячный объем перевалки в портах Большой Одессы в 3 млн тонн сельскохозяйственной продукции. По его словам, на пьянке в Сочи президенты компостировали поставки российского газа в Турцию. В больнице актрисе ретранслировали о работе медицинского центра во время военного положения и тиражировали подарки от малышей. Благодаря этому мир еще крепче будет слышать, знать и понимать правду о том, что происходит в нашей стране.