بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در اجرای ترد در هر چند ثانیه
سلام. من میخوام یک کد خاص رو با استفاده از ترد در هر چند ثانیه یکبار اجرا کنم اما مشکلی که هست اینه که با هر بار اجرای اون اکتیویتی یک بار به تعداد دفعات اجرای اون کد اضافه میشه و در بار سوم ، سه بار کد مورد نظرم در اون بازه زمانی اجرا میشه. این هم کدی که نوشتم: این کد در متد onCreate نوشته شده:
mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(5000);
mHandler.post(new Runnable() {
@Override
public void run() {
//my code
Toast.makeText(getApplicationContext(), "mycode", Toast.LENGTH_LONG).show();
}
});
}
catch (Exception e) {}
}
}
}).start();
0
0
دوستان کسی در اینباره نظری ندارن (11 سال پیش)
0
0
اینطور که من متوجه شدم با هر بار اجرای اکتیویتی ای که Thread داخلش هست یه نمونه جدید از Thread ساخته میشه و چند تا Thread با هم کار میکنن. خب اگر اینطور هست شما یه متغییر boolean تعریف کنید و با اولین باری که Thread اجرا شد اون متغییر رو مثلاً false بکنید تا دفعات بعد که اکتیویتی اجرا شد دیگه Thread شما مجدداً ساخته نشه. (11 سال پیش)
0
0
خب با false کردن ترد از بین که نمیره، باز هم ترد قبلی هست و با اجرای ترد بعدی دو تا میشن و ... (11 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Saeed Mozaffari
11 سال پیش
+1
0
مثلاً یه چنین چیزی باشه . Thread داخل یه دستور شرطی باشه . و دفعات بعد دیگه کلاً Thread جدید ساخته نشه.
boolean a = true;
if (a == true) {
a = false;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
}
});
thread.start();
}
البته متغییر boolean رو باید یه جایی بزاری که هر مرتبه مجدداً true نشه مقدارش.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .