如何使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