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