بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

اجرای دوباره دستورات داخل یک Thread

مدیریت گفتگو
mohsen.talk 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام

فرض کنید یک کلاس Thread داریم با نام MyThread که قرار هست با استفاده از یک Handler تغییراتی توی ui ما بده.

خب بعد از اینکه در قسمت onCreate برنامه این Thread رو start کردیم، MyThread کارش رو شروع میکنه و به یک if میرسه و کارش تموم میشه.

حالا اگه دوباره بخوایم MyThread عملیات رو از نو شروع کنه نمیشه از MyThread.start() استفاده کرد!

چطور میشه دستورات یک Thread رو از نو خواست که اجرا بشن؟

ممنون

نظرات

OmidAhmadian 12 سال پیش
فکر کنم برای تکرار باید از متد run به جای start استفاده کنی

پاسخ‌ها 3

pupil 12 سال پیش

مطمینی thread تموم مشه با یه log امتحان کن .یا threadرو نذار تمام بشه با یه دستور whlie من خودم این سوالو قبلا داشتم یه سری به سوالات پاسخ داده من بنداز شاید کمک کنه ببخش بیشتر بلد نیستم

نظرات

sadeghbarout 12 سال پیش

همونطور که دوستمون گفت یه راه اینه که نذاری thread تموم بشه مثلا با چک کردن یه متفییر boolean

 Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {

                boolean restart = true;
                while (restart) {

                    //دستورات
                }
            }
        });

حالا هروقت ، وقتش رسید مقدار متغییر restart رو از داخل حلقه false کن

نظرات

مجتبی یگانه 12 سال پیش

به نظر من ، بهترین کار فراخوانی یک تابع در رشته هست ، اما بهتره قبل از شروع رشته ی جدید رشته ی قبلی را null کنیم ، یعنی یه از حافظه خارج کنیم تا دیگه کاری نکنه

 package milad.cso.learn;

import android.app.Activity;
import android.os.Bundle;


public class ActivityMain extends Activity {

    Thread  thread1;
    Thread  thread2;
Boolean isJobD private void SomeFunction() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); thread1 = new Thread(new Runnable() { @Override public void run() { if ( !isJobDone) { SomeFunction(); thread1 = null; } } }); thread1.start(); // thread is out of memory when job is done ! now we can do job another time thread2 = new Thread(new Runnable() { @Override public void run() { if ( !isJobDone) { SomeFunction(); thread2 = null; } } }); thread2.start(); } }

نظرات


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