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

توقف کامل یا ایجاد وقفه در Thread

مدیریت گفتگو
BrotherV 11 سال پیش
آخرین تغییر: 11 سال پیش

با سلام خدمت تمامی دوستان
سوال را مستقیم مطرح میکنم؛ فرض کنید کلاسی از جنس Thread داریم و این کلاس به طور مثال برای فرایند دانلود فایل نوشته شده باشه، سوال اینجا مطرح میشه که؛
1- چطور به یک Thread خاص دسترسی پیدا کنیم؟ ( منظور دسترسی خاص به تردی که با زدن کلید شماره 1 فعال شده باشه)
2- چطور در یک Thread خاص وقفه ایجاد کنیم؟ (Pause کردن یک Thread)
3- چطور یک Thread خاص که Pause شده را به حالت Resume برگردونیم؟
4- چطور یک Thread خاص را متوقف کنیم؟ ( مثلا Stop کردن)
5- چگونه تغییرات ویژوالی یک ListView را در Thread تغییر بدیم به طوری که این تغییرات نسبت به هم تاثیر نداشته باشه؟(به طور مثال یک ListView به فرم عکس زیر داریم و فقط میخواهیم در Thread با تغییرات زمانی اعمالی بر روی هر Progressbar و TextView این تغییرات نمایش داده بشه و با پایین بردن ListView تغییرات اولین به مثلا هفتمین منتقل نشه) _(این تغییرات را میشه با تغییر محتویات آرایه و صدا زدن متد 
adapter.notifyDataSetChanged در Thread انجام داد اما این کار درستی نیست)

نظرات

MyNewName 11 سال پیش
آقا من چندین ماه درگیر همین موردم کسی هم نیست درست توضیح بده :(
nooriDeveloper 11 سال پیش
من 2 ماهه درگیر همین موضوع ام، متأسفانه هیچ راه حلی به جز استفاده از flag پیدا نکردم که به نظرم راه حل منطقی نمیاد.
BrotherV 11 سال پیش
برای Stop به نظر من هم باید از Flag یا یک رجیستر بیتی کنترل Thread استفاده کرد. برای دسترسی به Thread خاص که از یک کلاس چندین بار فراخوانی شده تنها راه معقولش استفاده از متد setName و getName هست. برای Pause/Resume هم یک لینک گذاشتم در پایین در صورت امکان کدش را ببینید و نظرتون را بگید. با سپاس فراوان

پاسخ‌ها 2

Hajhosseini 11 سال پیش

باید برای ترد مورد نظرتون Id ست کنید و زمانی که میخواید عملیاتی مانند متوقف شدن رو روش انجام بدید، با thread.getId ترد مورد نظرتون رو بگیرید.

نظرات

BrotherV 11 سال پیش
من مجدد چک کردم، در Thread، متدی به عنوان Set برای id وجود نداره اما get را داره، و زمانی که تنها یک Thread کار میکنه id مربوط Thread را در حلقه اجرا به صورت Log چاپ کردم که یک جورایی مبهم بود. برای سوالهای دیگه نظری به ذهنتون نمیرسه؟ با سپاس فراوان.
BrotherV 11 سال پیش
ازمتد SetName میشه یه جورایی برای جواب سوال اول استفاده کرد. برای سوال 4 هم یک جورهایی به جواب رسیدم اما برای سوالهای دیگه نه هنوز.
MyNewName 11 سال پیش
اقا مورد 4 رو چطور این کار می کنی ؟
hamidd 11 سال پیش
thread رو نمی تونید pause کنید.قبلا یک سری متدهایی برای این کار وجود داشت ولی حالا decreapted شدن و در صورت استفاده کردن ازشون برنامه کرش می کنه. به جاش می تونید thread رو null کنید. که این کار باعث متوقف شدن سریع thread نمیشه و به این صورت میتونین عمل کنین: یک فیلد بولین در بدنه ی کلاس اصلی تون (مثلا کلاس اکتیویتی تون) تعریف می کنید و داخل thread چک می کنین هر وقت true شد عملیات مورد نظر که در ترد هست انجام نشه(همچنین بهتره thread رو null کنید در این زمان)
BrotherV 11 سال پیش
البته حرف شما کاملا درسته و متدهایی از جمله stop و destroyed به صورت decreapted در اومدن و نمیشه ازشون استفاده کرد، من یک راه حل در Stackoverflow پیدا کردم اما مشورت دوستان را برای این تکه برنامه می طلبه، این متد در حالت کلی فرایند Pause/Resume را به صورت دیگه ای حل کرده. ممنون میشم نظرتون را در این مورد بدونم. لینک
BrotherV 11 سال پیش

یک راه حل در Stackoverflow پیدا کردم اما مشورت دوستان را برای این تکه برنامه می طلبه، این متد در حالت کلی فرایند Pause/Resume را به صورت دیگه ای حل کرده. ممنون میشم نظرتون را در این مورد بدونم.
How to pause/resume thread in Android

نظرات


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