首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android获取时间更新

Android获取时间更新
EN

Stack Overflow用户
提问于 2013-03-12 15:01:11
回答 3查看 778关注 0票数 0

我希望在60秒后定期调用特定的代码补丁,以获取应用程序中更新的数据。我想知道我应该把代码放在主要的Android活动中的哪里。任何帮助我都将不胜感激

EN

回答 3

Stack Overflow用户

发布于 2013-03-12 15:07:28

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

票数 1
EN

Stack Overflow用户

发布于 2013-03-12 15:37:31

代码语言:javascript
复制
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#onDestroy或更好的Activity#onPause中停止它。另外,看看TimerScheduledThreadPoolExecutorTimerTask,它们可能更适合你的需求。

票数 0
EN

Stack Overflow用户

发布于 2013-03-12 15:43:03

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

代码语言:javascript
复制
// 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15355203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档