آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

BrotherV  11 سال پیش  11 سال پیش
0 0

با سلام خدمت تمامی دوستان
سوال را مستقیم مطرح میکنم؛ فرض کنید کلاسی از جنس 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 انجام داد اما این کار درستی نیست)

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

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

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

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


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