بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
متوقف کردن thread (سوال)
من دارم رو یک پروژه کورنومتر کار می کنم که توش از 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 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .