PDA

View Full Version : تکرار مجدد یک وظیفه



nazanin.num1
شنبه 09 اردیبهشت 1391, 18:05 عصر
سلام
همونطور که میدونید با کد زیر میشه یک تاخیر در اجرای یک وظیفه ایجاد کرد:

Handler mHandler = new Handler();
mHandler.postDelayed(mLaunchTask,7000);

حالا سوال من اینجاس که چطور میشه با تاخیر مثلا 10 ثانیه اونم بصورت Loop یه وظیفه در BackgroundData تکرار بشه؟ (یعنی اگر برنامه هم ;()finish شد این چرخه به کار خودش ادامه بده)

powerboy2988
شنبه 09 اردیبهشت 1391, 20:02 عصر
شما می تونی از Thread و service استفاده کنی...

nazanin.num1
شنبه 09 اردیبهشت 1391, 22:08 عصر
ممنون از راهنمایی شما، من میدونم که باید از Thread استفاده کنم؛ اگر امکانش هست یه مثال بزنید.

powerboy2988
شنبه 09 اردیبهشت 1391, 22:18 عصر
Thread() thread = new Thread() {
@Override
public void run() {
try {
while (1) {
sleep(10000);// your delay time
yourJob(); // your job
}
} catch (Exception e) {

}
}
};
thread.start();



همونطور هم که می دونید thread مستقل از app شما کار می کنه و وقتی stop میشه که یا cpu بندازتش بیرون یا از thread.stop استفاده کنید...

nazanin.num1
دوشنبه 11 اردیبهشت 1391, 21:46 عصر
کسی از دوستان میتونه بهتر راهنمایی کنه؟
چطور میشه با استفاده از Thread، یک حلقه ایجاد کرد که مثلا هر 10 ثانیه یک Toast نمایش داده شود.(حتی اگر از برنامه هم خارج شد ;()finish باز هم این Toast هر 10 ثانیه نمایش داده شود.) لطفا نمونه کد تست شده رو اینجا بگید :)

powerboy2988
دوشنبه 11 اردیبهشت 1391, 21:58 عصر
کسی از دوستان میتونه بهتر راهنمایی کنه؟
چطور میشه با استفاده از Thread، یک حلقه ایجاد کرد که مثلا هر 10 ثانیه یک Toast نمایش داده شود.(حتی اگر از برنامه هم خارج شد ;()finish باز هم این Toast هر 10 ثانیه نمایش داده شود.) لطفا نمونه کد تست شده رو اینجا بگید :)

مشکلتون با این کد چیه؟؟ Toast رو نمی تونید توش بکار ببرید، می تونید از notification استفاده کنید...

nazanin.num1
دوشنبه 11 اردیبهشت 1391, 22:49 عصر
بله, لطفا بگین چطور میشه از toast تو این کد استفاده کرد. من تست کردم ولی به مشکل خوردم.

powerboy2988
دوشنبه 11 اردیبهشت 1391, 22:57 عصر
final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
public void run() {
Toast(this, message, duration).show();
}

new Thread() {
public void run() {
mHandler.post(mUpdateResults);
}
}.start();

nazanin.num1
سه شنبه 12 اردیبهشت 1391, 10:20 صبح
زمان رو کجا باید استفاده کنم؟

sleep(10000);

powerboy2988
سه شنبه 12 اردیبهشت 1391, 11:01 صبح
final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
public void run() {

Toast.makeText(getBaseContext(), "Hello", Toast.LENGTH_LONG)
.show();
}
};
new Thread() {
public void run() {
try {
while (true) {
sleep(10000);
mHandler.post(mUpdateResults);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();