如何使Async任務在一段時間間隔之後重複執行,就像Timer ...其實我正在開發一個應用程序,它將自動從服務器下載所有最新的未讀問候語,目的我必須檢查更新從服務器經過一段固定的時間間隔後....我知道這可以通過計時器輕鬆完成,但我想使用異步任務,我認爲它對android應用程序更有效。如何在固定的時間間隔內重複執行異步任務
回答
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
PerformBackgroundTask performBackgroundTask = new PerformBackgroundTask();
// PerformBackgroundTask this class is the class that extends AsynchTask
performBackgroundTask.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 50000); //execute in every 50000 ms
}
你可以處理程序:
private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handle m_handler;
@Override
protected void onCreate(Bundle bundle)
{
...
m_handler = new Handler();
}
Runnable m_statusChecker = new Runnable()
{
@Override
public void run() {
updateStatus(); //this function can change value of m_interval.
m_handler.postDelayed(m_statusChecker, m_interval);
}
}
void startRepeatingTask()
{
m_statusChecker.run();
}
void stopRepeatingTask()
{
m_handler.removeCallback(m_statusChecker);
}
但我會建議你檢查這個框架:http://code.google.com/intl/de-DE/android/c2dm/是一種不同的方法:當事情是準備服務器將通知電話(因此,節省了一些帶寬和性能:))
感謝alot.Actually我只是發展application.Server側的客戶端已經工作了爲iPhone開發的同一個應用程序,我不得不使用的Android – Waseem
在同一臺服務器我是新來穿線在android中。你在哪裏把runnable傳遞給處理程序? –
回答@DheeB,回答者在這裏沒有提到它,儘管它應該在實例化過程中像這樣m_handler = new Handler(m_statusChecker);此解決方案可能無法正常工作的另一個原因,因爲問題清楚地表明將有網絡操作「自動從服務器下載所有最新的未讀問候語」..但是,儘管您正在使用處理程序,但此處理程序/ runnable仍在運行在仍然阻塞的UI線程中。您需要手動在單獨的線程中啓動它。 – tony9099
//Every 10000 ms
private void doSomethingRepeatedly() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
try{
new SendToServer().execute();
}
catch (Exception e) {
// TODO: handle exception
}
}
}, 0, 10000);
}
建議您在Android文檔https://developer.android.com/reference/java/util/Timer.html中使用Timer上的ScheduledThreadPoolExecutor來支持所有新代碼 –
- 1. 以固定的時間間隔重複執行任務
- 2. 按給定的時間間隔執行異步任務
- 3. 如何正確使用AlarmManager類以固定的時間間隔執行任務?
- 4. 特定時間間隔內的重複性任務?
- 5. 什麼應該用於在android中以固定間隔重複執行任務?
- 6. 如何在固定時間間隔內運行magento中的cron.php
- 7. 的時間在Android上的固定時間後如何重複任務?
- 8. 在特定的時間間隔執行任務
- 9. 定時器有兩個執行任務的時間間隔
- 10. 如何在特定的時間間隔內執行JavaScript代碼?
- 11. 如何將大量任務劃分爲小任務並在特定時間間隔內執行,在php
- 12. 通過一定間隔的時間間隔通過線程執行任務
- 13. 實現按時間間隔調用的異步任務
- 14. 如何以隨機時間間隔執行任務?
- 15. 如何在固定的時間間隔後重新列表listview?
- 16. 重複在設定的時間間隔
- 17. 在進程內每隔一段時間執行一次任務
- 18. 任務執行時間高於定時器執行時間
- 19. 如何確保定時記錄在固定的時間間隔?
- 20. MVC 3 - 在間隔時間執行一些任務
- 21. 在固定的時間間隔後定期執行同一任務的不同方式?
- 22. 在固定的時間間隔
- 23. 在特定時間執行任務
- 24. 固定時間間隔後重新啓動Windows服務
- 25. 在特定的時間間隔後執行任務的正確方法
- 26. ThreadPoolScheduler間隔小於任務的執行時間
- 27. 在特定時間間隔後執行任務的最佳做法是什麼?
- 28. 如何執行日期/時間間隔
- 29. 在蟒蛇在特定時間間隔運行任務
- 30. 特定時間間隔重複報警
非常感謝.... – Waseem
一個異步任務無論如何運行在自己的線程。爲什麼在處理程序上運行它? – Siddharth
是的,異步任務在單獨的線程上運行,但不能從UI線程以外的其他線程啓動。我想這個處理程序是允許的。 – r1k0