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

مشکل در اجرای ترد در هر چند ثانیه

mortex  11 سال پیش  11 سال پیش
0 0

سلام. من میخوام یک کد خاص رو با استفاده از ترد در هر چند ثانیه یکبار اجرا کنم اما مشکلی که هست اینه که با هر بار اجرای اون اکتیویتی یک بار به تعداد دفعات اجرای اون کد اضافه میشه و در بار سوم ، سه بار کد مورد نظرم در اون بازه زمانی اجرا میشه. این هم کدی که نوشتم: این کد در متد 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 نشه مقدارش.

0 0
بهتره که متغییر boolean در کلاس G یا ActivityEnhanced ساخته بشه بصورت public static (11 سال پیش)

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