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

متوقف کردن thread (سوال)

علیرضا  10 سال پیش  10 سال پیش
+1 0

من دارم رو یک پروژه کورنومتر کار می کنم که توش از thread استفاده می کنم.
می خوام بازدن یک دکمه تایمر شروع به کار کنه و با زدن دوباره همون دکمه تایمر متوقف و درصورت کلیک مجدد ادامه پیدا کنه.

و یک دکمه دیگه که با زدن اون ترد کاملا متوقف بشه و در صورت زدن دکمه اول ارورر نده که این ترد در حال اجراست.
ترد من تو حلقه while که با زدن دکمه اول برای بار اول اجرا میشه و شرط true میشه  (G.isPlayBtnClicked) برای بار دوم کل پرسه متوقف میشه ولی بار سوم که رو دکمه کلیک می کنم  برنامه کرش می کنه و میگه ترد در حال اجراست.

کلاس G :

 

     public static Handler handler          = new Handler();
public static boolean isPlayBtnClicked = true;

 

کد اصلی:

     private ImageView play;
private boolean isSecondClicked;
final ThreadCastom thread = new ThreadCastom();
thread.setTextView(txtCornoMeter);
play.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
play.setImageResource(R.drawable.pause);
if (isSecondClicked) {
G.isPlayBtnClicked = !G.isPlayBtnClicked;
Log.i("LOg ::", "Parametr 1 Runded !");
isSecondClicked = !isSecondClicked;

} else {

thread.start();
Log.i("LOg ::", "Thread Started !");
isSecondClicked = !isSecondClicked;
}


کد ترد:

 

   @Override
public void run() {
super.run();
timerSayer();

}


private void timerSayer() {
while (G.isPlayBtnClicked) {

try {
Thread.sleep(1);
}
catch (InterruptedException e) {

e.printStackTrace();
}
cornoMeterC();
G.handler.post(new Runnable() {

@Override
public void run() {
txtTimers.setText("" + prefixHour + hour + " . " + prefixMinute + minute + " . " + prefixSecond + second + " . "
+ prefixMiliSec + miliSec);

}
});
}


}
0 0
جوابی نیست ؟ (10 سال پیش)
0 0
کد شما را بررسی نکردم اما این سوال قبلا هم پرسیده شده است. لینک یا این یکی لینک (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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