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

بیدار کردن thread

fanta  9 سال پیش  9 سال پیش
0 0

سلام دوستان

من تو برنامم یک thread  دارم که واسه مثلا واسه یک دقیقه میره روی  sleep . حالا میخوام اگه تو این یک دقیقه کاربر روی یک دکمه کلیک کرد ُ  thread بیدار بشه و از اول شروع به کار کنه.راهنمایی لطفا ...

0 0
سلام لینک (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Reza  9 سال پیش
+1 0

سلام

اینو آماده داشتم ببین با تغییر دادنش به دردت میخوره :

public class ActivityMain extends Activity {

long firstTime;
long currentTime;
long elapsedTime; // زمان سپری شده در هر فراخوانی تایمر
long lastElapsedTime = 0; // زمان سپری شده در کل فراخوانی ها و توقف ها
Timer timer;
boolean timerIsRunning;
TextView txt1;

//=========================================================
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button1 = (Button) findViewById(R.id.button1);
txt1 = (TextView) findViewById(R.id.txt1);


button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (timerIsRunning) {
stopTimer();
} else {
startTimer(lastElapsedTime);
}
}
});

}

//=========================================================

private void startTimer(final long lastElapsedTime) {

timerIsRunning = true;
firstTime = System.currentTimeMillis();

timer = new Timer();
timer.schedule(new TimerTask() {

@Override
public void run() {

currentTime = System.currentTimeMillis();
elapsedTime = (currentTime - firstTime) + lastElapsedTime;
G.hendler.post(new Runnable() {

@Override
public void run() {
txt1.setText(elapsedTime + "");
}
});
}
}, 1, 1);
}


//=========================================================
private void stopTimer() {

timerIsRunning = false;

if (timer != null) {
timer.cancel();
lastElapsedTime = elapsedTime; // ذخیره آخرین زمان ثبت شده
}
}
}

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