2013-03-12 50 views
0

我想在60秒后定期调用特定的代码以获取应用程序中的更新数据。我想知道我应该把代码放在主Android活动中。任何帮助将不胜感激 感谢Android获取时间更新

+0

创建一个线程,并调用的AsyncTask在每一分钟 – Pragnani 2013-03-12 07:03:35

+0

谢谢,你可以分享的线程代码样本和我应该在哪里放置的代码在android活动? – CodeAddiction 2013-03-12 07:05:11

+1

检查此链接http://android-developers.blogspot.kr/2007/11/stitch-in-time.html – Pragnani 2013-03-12 07:14:17

回答

1

您可以使用Timer类Java的util包。它将允许您再次定期执行特定代码&。看看每5秒执行一次的example

0
import android.os.Handler; 

public class ExecuteEveryMinuteExample { 
    private static final int DELAY_IN_MILLIS = 60000; 

    private final Handler handler; 
    private final Runnable task; 

    public ExecuteEveryMinuteExample(Handler handler, Runnable runnable) { 
     this.handler = handler; 
     this.task = new Task(runnable); 
    } 

    public void start() { 
     handler.postDelayed(task, DELAY_IN_MILLIS); 
    } 

    public void stop() { 
     handler.removeCallbacks(task); 
    } 

    private class Task implements Runnable { 
     private Runnable task; 

     private Task(Runnable runnable) { 
      this.task = runnable; 
     } 

     @Override 
     public void run() { 
      task.run(); 
      start(); 
     } 
    } 
} 

这种“定时”与活动相关的生命周期,记得在Activity#onPause停止它在Activity#onDestroy或更好。还可以结账Timer,ScheduledThreadPoolExecutorTimerTask它们可能更适合您的需求。

0

在android中使用服务和广播接收器。

// Restart service every 30 seconds 
    private static final long REPEAT_TIME = 1000 * 30; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    AlarmManager service = (AlarmManager) context 
     .getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(context, MyStartServiceReceiver.class); 
    PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, 
     PendingIntent.FLAG_CANCEL_CURRENT); 
    Calendar cal = Calendar.getInstance(); 
    // Start 30 seconds after boot completed 
    cal.add(Calendar.SECOND, 30); 
    // 
    // Fetch every 30 seconds 
    // InexactRepeating allows Android to optimize the energy consumption 
    service.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
     cal.getTimeInMillis(), REPEAT_TIME, pending); 

请参阅本网站以获取更多信息。

http://www.vogella.com/articles/AndroidServices/article.html

+0

在我看来,使用服务更新时间视图是矫枉过正。 – delor 2013-03-12 08:28:24