如何在固定的时间间隔后重复执行Async任务
如何使Async任务在一段时间间隔之后重复执行,就像Timer …其实我正在开发一个应用程序,它将自动从服务器上下载所有最新的未读问候语,为此我必须在经过一些固定的时间间隔….我知道,可以通过计时器轻松完成,但我想使用asynchronous任务,我认为是更有效的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 }
//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); }
你可以只是一个处理程序:
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); }
但我会build议你检查这个框架: http : //code.google.com/intl/de-DE/android/c2dm/是一个不同的方法:服务器将通知手机什么时候准备好了(因此,保存一些带宽和性能:))
创build一个服务并通过报警pipe理器进行安排效率会不会更高?
- 使用Android的getBaseContext,getApplicationContext或者使用Activity的“this”
- Android – 如何接收广播意图ACTION_SCREEN_ON / OFF?
- 什么是textview文本的默认颜色?
- 将浮点值添加到android资源/值
- 如何用Stringtypes生成buildConfigField
- 是否有可能在Android TextView中显示来自HTML的内嵌图像?
- 如何validationAndroid apk是否使用发行证书进行签名?
- 在Android Studio中使用Gradlepipe理Google Maps API密钥
- Android:如何防止后退button取消FragmentDialog