چگونگی دسترسی thread به thread مربوط به ui (که همون نخ اصلی هست)
وقت همگی بخیر
کدهای ارتباط با سرور رو من داخل یک thread میذارم.
درسته؟ تا اجرا بشه و برنامه کرش نکنه.
یعنی thread ای که مربوط به ui برنامه میشه ، داره برای خودش کار میکنه و این thread هم برای خودش میره با سرور ارتباط برقرار میکنه. درسته؟
پس چطوری میتونه به ui دسترسی داشته باشه و مقادیر رو به listview نشون بده یا هر چیز دیگه ای که در ui هست؟
یعنی هیچکس به این مشکل بر نخورده ؟!
جالبه!
این همه نرم افزار ارتباط با سرور هست...
وقتی که یک سری کد رو داخل Thread می نویسید اگه توی کدها کدی باشه که UI برنامه رو تغییر بده (مثلا setText برای TextView) برنامه کرش می کنه چون که فقط باید از طریق Thread اصلی UI رو تغییر بدید. به خاطر همین توی Thread هرجا کدی می خواست که UI رو تغییر بده اون کد رو داخل Handler می نویسید. مثلا:
final TextView txt = (TextView) findViewById(R.id.txt);
final Handler handler = new Handler();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
txt.setText("سلام");
}
});
}
});
با این کد txt.setText که توی thread نوشته شده در واقع توی Thread اصلی اجرا میشه.
باید به این نکته توجه داشته باشی که Handler رو توی thread تعریف نکنی.
این توضیح Handler بود اگه متوجه نشدید بخش همزمانی رو ببینید.
اگه بازم برنامه تون کار نکرد کدهاتون رو بزارید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .