اجرای دوباره دستورات داخل یک Thread
سلام
فرض کنید یک کلاس Thread داریم با نام MyThread که قرار هست با استفاده از یک Handler تغییراتی توی ui ما بده.
خب بعد از اینکه در قسمت onCreate برنامه این Thread رو start کردیم، MyThread کارش رو شروع میکنه و به یک if میرسه و کارش تموم میشه.
حالا اگه دوباره بخوایم MyThread عملیات رو از نو شروع کنه نمیشه از MyThread.start() استفاده کرد!
چطور میشه دستورات یک Thread رو از نو خواست که اجرا بشن؟
ممنون
مطمینی thread تموم مشه با یه log امتحان کن .یا threadرو نذار تمام بشه با یه دستور whlie من خودم این سوالو قبلا داشتم یه سری به سوالات پاسخ داده من بنداز شاید کمک کنه ببخش بیشتر بلد نیستم
همونطور که دوستمون گفت یه راه اینه که نذاری thread تموم بشه مثلا با چک کردن یه متفییر boolean
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
boolean restart = true;
while (restart) {
//دستورات
}
}
});
حالا هروقت ، وقتش رسید مقدار متغییر restart رو از داخل حلقه false کن
به نظر من ، بهترین کار فراخوانی یک تابع در رشته هست ، اما بهتره قبل از شروع رشته ی جدید رشته ی قبلی را 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();
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .