آموزش 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 بالا میاد
نظری ندارین ؟