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

thread and progress

msm  11 سال پیش  11 سال پیش
+1 0

سلام بچه ها

میخواستم برا تمرین برنامه Freaking Math  رو بسازم حالا مثل همون برنامه جمع دو تا عدد رو به کار بر نشان میدادم و در بالا هم یک پروگرس بار قرار داره که به ترد متصل هست هر بار که کاربر پاسخ صحیح بدهد پروگرسس بار از اول شروع به کار می کند مشکل اینجاست که اگه کار بر زدوتر از زمان تعین شده جواب بده تردی که به پروگرس متصل هست به کار خودش ادامه می دهد و اینطور در نمایش پروگرس بعدی اختلال ایجاد می شود؟

حالا مشکلم همانطور که گفتم اینه که ترد رو چه جوری میشه استاپ کرد ؟؟؟؟( یا یه جوری از ادامه کارش قبل از به پایان رسیدن زمان استانداردی که تعیین کردم جلوگیری به عمل بیاید).

البته تو انجمن گشتم یک دو پاسخ پیدا کردم با هاشونم سرو کله زدم ولی چیزی از شون گیرم نیومد.

 

 @Override
    public void run() {
        super.run();

        while (seconds > 0) {

            try {
                Thread.sleep(1000);
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (prg != null) {
                ActivityMain.HANDLER.post(new Runnable() {

                    @Override
                    public void run() {
                        prg.setProgress(seconds);
                        Log.i("Log", "seconds= " + seconds);
                    }
                });
            }
            seconds--;
        }

    }

 

 

 

0 0
بچه ها کسی نبود (11 سال پیش)
0 0
بچه ها کسی بلد نبود حتی یه کم توضیح بده (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
msm  11 سال پیش
0 0

خخخخخخخخ خدای مردم از خنده جوابش خیلی ساده بود

کلاس ترد رو آوردم پایین اکتیویتی که توش از همون ترد استفاده می کردم یه فیلد stopThread درست کردم هر وقت خواستم ترد متوقف شه از ایف پایین اسفاده می کردم که باعث می شد از حلقه مربوط به ترد بیاد  بیرون.

 

    public boolean              stopThread= false;





if (stopThread) { Log.i("Log", "endThread= " + endThread); return; }

0 0
اگه کسی متدی چیزی پیدا کرد بگه دریغ نکنه بلکه یه چیزی یاد بگیریم (11 سال پیش)
پاسخ به سوال 
BrotherV  11 سال پیش
0 0

فرض کنیم که یک Thread  داریم که چندین بار اجرا شده، مثلا یک کلاس نوشتیم از Thread برای دانلود کردن، زمان اجرا یا بهتر بگم استارت باید یک فیوز بیت یا یک رجیستر بیتی که بیانگر راه اندازی شدن ترد هست استفاده کنیم.
کد زیر نمونه کلاس Thread هست که با زدن دکمه Thread فعال و با زدن دوباره غیر فعال میشه.

کلاس اکتیویتی به همراه کلاس Thread.

 public class ActivityMain extends Activity{
	
	public boolean chkStatus;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		final ThreadRun thread = new ThreadRun();
		
		Button btnSetTime = (Button) findViewById(R.id.btnSetTime);
		btnSetTime.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(!chkStatus){
					thread.start();
					chkStatus = true;
				}
				else
					chkStatus = false;
			}

thread.threadDeactive(chkStatus); }); } }


public class ThreadRun extends Thread {
private boolean isclicked;
public void threadDeactive(boolean chkStatus){ isclicked = chkStatus; } @Override public void run() { super.run(); startProgress(); } public void startProgress(){ if(isclicked){ //do something threadSleep(1000); }else{ Thread.currentThread().interrupt(); return; } } public void threadSleep(int sleep){ try { Thread.sleep(sleep); } catch (InterruptedException e) { e.printStackTrace(); } } }

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