嗨我想知道如何使任務隨着時間的推移而停止。我已經嘗試過Thread.Sleep(),它不起作用。所以基本上這是我的想法,我想每5秒執行一次任務,然後停止重複它。如何定期執行任務?
啓動任務 - 創建活動時。
執行任務
等待5秒鐘
執行任務再次
...
活動關閉
任務不會再執行。
嗨我想知道如何使任務隨着時間的推移而停止。我已經嘗試過Thread.Sleep(),它不起作用。所以基本上這是我的想法,我想每5秒執行一次任務,然後停止重複它。如何定期執行任務?
啓動任務 - 創建活動時。
執行任務
等待5秒鐘
執行任務再次
...
活動關閉
任務不會再執行。
使用的TimerTask如下
Timer t = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// Do your stuff
}
});
}
};
t.scheduleAtFixedRate(task, 1000, 5000);
在onDestry
t.cancel()
我得到錯誤 - 不能創建處理程序內線程沒有正確調用活套 – user3182266
你是否在做任何內部更新任務內運行()? – Sonali8890
如果是,那麼使用handler或runOnUiThread()。 – Sonali8890
如果您只想在活動打開時執行任務,最簡單的方法就是使用計時器。有關定時器的說明,請參閱here。
我同意這是我使用代碼的最簡單的方法,因爲我使用的代碼是cosmincalistru,但我得到一個錯誤: 無法創建處理程序內部的線程沒有正確調用活套 – user3182266
你可以試試這個:
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
yourTaskMethod();
}
};
timer.scheduleAtFixedRate(tt, 0L, 5000L);
UPDATE:
如果妳打算使用的主要元素,該方法像Toast
或別的東西,ü應使用:
public void yourTaskMethod() {
//simple elements that don't need main thread
int a = b+c;
// for elements that use main thread
runOnUiThread(new Runnable() {
public void run() {
Toast...
}
});
}
無法在未調用Looper.prepare()的線程內創建處理程序 – user3182266
@ user3182266:看我更新的回答 – cosmincalistru
Intent intent = new Intent(this, TestService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),5000, pintent); // 5000 means 5 second
TestService.java
public class TestService extends Service
{
@Override
public void onCreate()
{
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Service Created", 1).show();
super.onCreate();
}
}
最終螺紋myTask =新主題( 新的Runnable(){ 公共無效的run(){ 詮釋計數= 0; 而(計數< = 1 ){ //做任何你需要的事 ... count ++; System.sleep(5000); // 5秒 } } } ).start();
查看關於Alarm Manager的文檔 - 幫了我很多。
使用Alarm Manager它那在android系統
使用運行的線程的標準方法,用一個處理程序開始吧...由handler.postDelayed(可運行,5 * 1000).... 調用相同的語句中可運行的運行方法....
使用處理程序或計時器任務。 – Raghunandan