ورود

View Full Version : چگونه یک Thread را در اندروید Stop کنیم



zahra_jalil
دوشنبه 14 بهمن 1392, 11:04 صبح
من میخوام در برنامه ام thread رو که قبلا Start کردم ، stop , destroy و resume کنم!
خود دستوراتش که خطا میده(مثل thread.stop)

خطای UnsupportedOperationException.

کسی میدونه باید چیکار کنم؟؟؟

ghader62
دوشنبه 14 بهمن 1392, 11:08 صبح
سلام
if ((thread != null) && (thread.isAlive())) {
thread.interrupt();
thread = null;
}
شرمنده من فقط قسمت destroy دم دستم بود
بقیه رو یه سرچ کوچولوی انگلیسی بزنی پیدا میکنی

zahra_jalil
سه شنبه 15 بهمن 1392, 07:21 صبح
ممنون از جوابتون!!
من این راه رو امتحان کردم اما بازم Thread به کار خودش ادامه میده و stop نمیشه!
شما این رو کجا call کردید؟ در برنامتون جواب گرفتید؟؟

rubiks.kde
سه شنبه 15 بهمن 1392, 10:10 صبح
ممنون از جوابتون!!
من این راه رو امتحان کردم اما بازم Thread به کار خودش ادامه میده و stop نمیشه!
شما این رو کجا call کردید؟ در برنامتون جواب گرفتید؟؟

چیزی که دوستمون گفتن درست هست ولی لازمه شما توی تابع run هم چک کنید که اگه Thread.currentThread().isInterrupted() از تابع خارج بشید.

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Thread thread = new Thread(runnable);

Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
thread.start();
}
});

Button button1 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
thread.interrupt();
}
});
}

Runnable runnable = new Runnable() {

@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Log.i("Test", "Run");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
}
}
};
}