بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چگونگی دسترسی thread به thread مربوط به ui (که همون نخ اصلی هست)

مدیریت گفتگو
شهریاری 2 10 سال پیش
آخرین تغییر: 10 سال پیش

وقت همگی بخیر

کدهای ارتباط با سرور رو من داخل یک thread میذارم.

درسته؟ تا اجرا بشه و برنامه کرش نکنه.

یعنی thread ای که مربوط به ui برنامه میشه ، داره برای خودش کار میکنه و این thread هم برای خودش میره با سرور ارتباط برقرار میکنه. درسته؟

پس چطوری میتونه به ui دسترسی داشته باشه و مقادیر رو به listview نشون بده یا هر چیز دیگه ای که در ui هست؟

نظرات

Reza 10 سال پیش
سلام ، با استفاده از Handler ای که در UI Thread ساخته شده .
Amir 10 سال پیش
سوالتون گنگه یکم بیشتر توضیح بدید!
شهریاری 2 10 سال پیش
یک کدی دارم که باید به سرور وصل بشه و مقادیری رو از mysql دریافت کنه. چون قرار هست که به سرور وصل بشه، نیاز هست که در یک thread باشه تا برنامه کرش نکنه. خب وقتی که اطلاعات رو از سرور گرفت، نیاز هست که در یک listview نمایش بده. متاسفانه برنامه من چیزی رو نشون نمیده وقتی که کدها داخل thread باشن. چون داده های الکی رو که به listview میفرستم، لیست ویو درست کار میکنه ولی وقتی داخل thread میبرم، چیزی نشون نمیده. انگار listview ندارم
شهریاری 2 10 سال پیش
اقا رضا میشه یه مثال برام بزنی؟! بیشتر توضیح میدی؟ نمونه کدی، چیزی!

پاسخ‌ها 2

شهریاری 2 10 سال پیش

یعنی هیچکس به این مشکل بر نخورده ؟!

جالبه!

این همه نرم افزار ارتباط با سرور هست...

 

نظرات

Amir 10 سال پیش

وقتی که یک سری کد رو داخل 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 بود اگه متوجه نشدید بخش همزمانی رو ببینید.

اگه بازم برنامه تون کار نکرد کدهاتون رو بزارید.

نظرات

شهریاری 2 10 سال پیش
لایک داری مهندس! باشه تست کنم، خبر میدم...
شهریاری 2 10 سال پیش
هورااااااااااااااااااااااااااااااااااااااااااا درست شد! آقا خیلی تشکر!

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .