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

غیر فعال کردن یک thread با خارج شدن از Activity

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

سلام

یک thread مثل همونی که استاد درس داده درست کردم یعنی تو یک class جدید بعد گفتم بعد از چند ثانیه یک پیام بده "وقت تموم" 

اول این پیام toast گذاشتم دیدم با اینکه از Activity خارج میشم بعد از مدتی توی یک اکتیوتی دیگه پیام توست نشون داده میشه

درننتیجه برای نشون ندادش آمدم اون thread تو کلاس  خود اکتویتی نوشتم  تا نشون داده نشه دیدم نمیشه 

از شرط this instance of استفاده امدم بکنم که میگه گویا این شرط تو متد Runnable کار نمیکنه

حالا چیکار کنم تا این پیام توست نشون داده نشه

یه کار دیگه هم کردم که بدتر شد گفتم اگه زمان تموم شده یه dialog نشون بده که error میده  چون اکیتویتی دیگه dialog نداره

امید وارم متوجه شده باشید

******شفاف سازی:یه ترد  تو یه اکتویتی(اکتیوتی اول ) استارت میشه تا 60 ثانیه بشماره مثل آموزش counter بعد که این 60  ثانیه  تموم شد  یه پیامی رو نشون بده. حالا اگه تو این 60 ثانیه (مثلا ثانیه 40)فرد با دکمه back یا هر دکمه ای از (اکتیوتی اول )خارج شد  میخوا م دیگه اون پیام نشان داه نشه ولی میشه*****

نظرات

uncocoder 12 سال پیش
حقیقتش من خیلی نفهمیدم چی شد.
مجتبی یگانه 12 سال پیش
اگر من درست متوجه شده باشم ، میگن که مثلا یه ترد تو اکتیویتی یک استارد میشه ، ولی وقتی توی اکتیویتی 2 هستیم ، چون به وقفه زمانی رسیده خروجی میده ، در صورتی که میخوان اگر توی اکتیویتی اول جوابی نگرفتن ترد متوقف بشه
pupil 12 سال پیش
سوالو کمی درست کردم امیدوارم متوجه شده باشید
pupil 12 سال پیش
با گزینه thread.stop نمیشه کاری کرد و باعث کرش میشه

پاسخ‌ها 1

مجتبی یگانه 12 سال پیش

هنگامی که میخواید با intent به اکتیویتی دیگه برید ، thread رو stop کنید :)

ویرایش

اینم سورس ، واسه دوستانی که حالشو ندارن یه سرچ کوچیک تو گوگل بزنن !

 Thread thread = new Thread(new Runnable() {

                    public void run() {

                    }
                });
                Boolean ActivityChanged = true;
                thread.start();
                if (ActivityChanged)
                {
                    thread.stop();
                }

 

ویرایش 2 : تو استک اینو پیدا کردم ، میگه stop کردن روش مناسبی نیست

//NOTE : the method Thread.stop() is deprecated
//EDIT : : try this
public void stopThread(){ if(myService.getThread()!=null){ myService.getThread().interrupt(); myService.setThread(null); } }

نکته : میتوانید از thread.inerrupt() یا Thread=null استفاده کنید 

برگرفته از همون لینک stack over flow

نظرات

pupil 12 سال پیش
راه حل شمارو هنوز استفاده نکردم یعنی thread.stop کنم دکمه back باید براش کد بنویسم امتحان میکنم تا دوروز دیگه مرسی دوست عزیز
pupil 12 سال پیش
راستش خیلی از سوالمو یا از کتاب پیدا میکنم یا stackover ولی اونایی که نمیدوم یا نمیفهم اینجا میگم تا دوروز نمیتونم از کد شما اسفاده کنم فقط الان ActivityChanged یه متغیر ؟؟بعد چطور بفهمه من از اکتیوتی رفتم بیرون
مجتبی یگانه 12 سال پیش
این یه نمونه کد بود ، منظورم این بود که میشه از این روش هم استفاده کرد ، ولی راه حل شما اینه که مثلا هر جا intent ساختی که بره صفحه بعد thread.stop اجرا بشه

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