【问题标题】:Running task periodicaly(once a day/once a week)定期运行任务(每天一次/每周一次)
【发布时间】:2012-01-26 18:47:57
【问题描述】:

我想定期(每周/每天一次)运行一些任务(即获取我的网站新闻页面),即使我的应用程序已关闭。可能吗?

【问题讨论】:

    标签: android android-alarms


    【解决方案1】:

    是的,您需要查看AlarmManager 来设置重复发生的“警报”。这对设备的电池寿命更好,因为它不像服务那样​​在后台持续运行。警报触发broadcast receiver,它将执行您的自定义代码。

    最后一点 - 警报时间有枚举值,包括每天、每天半天等等,尽管您可以设置一个实际值。

    可以在下面的 SO 帖子中找到一个很好的例子:

    Alarm Manager Example

    更新

    Android 中添加了新功能。如果您正在阅读本文,那么我建议您现在查看GcmNetworkManager。这可以优化电池寿命并在棒棒糖之前工作。对于 Lollipop,您可以使用 JobScheduler。我建议在 AlarmManager 上使用这些类。

    【讨论】:

    • 谢谢,这正是我想要的。
    • @Graham Smith 出于兴趣,你自己写的吗?
    • @Graham Smith 您提供的链接已损坏。你能提供一个有效的链接吗?
    • @Zapnologica 现在有一个很好的例子——我的链接在发布时有效。希望这会有所帮助
    • 我认为现在完成这项任务的正确工具正在转向GcmNetworkManager
    【解决方案2】:

    我认为最合适的是GcmNetworkManager。基本上它拥有您从 AlarmManager 和持久性所需的一切,因此作业可以在重新启动后继续执行。

    例子:

    PeriodicTask task = new PeriodicTask.Builder()
            .setService(MyTaskService.class)
            .setTag(TASK_TAG_PERIODIC)
            .setPeriod(5L)
            .build();
    
    mGcmNetworkManager.schedule(task);
    

    【讨论】:

    • 你是对的 - 这可能会成为这样做的正常方式。我在 2.5 年前写了我的答案,所以事情继续发展。我认为您需要添加有关适用于 Android 5+ 的 Lollipop Job Scheduler 的信息,因为您不必使用 GcmNetworkManager。顺便说一句,我投了赞成票。
    【解决方案3】:

    作为替代方案,我正在比较本周:

    Calendar cal = Calendar.getInstance();
    int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR);
    
    SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0);
    int weekOfYear = sharedPreferences.getInt("weekOfYear", 0);
    
    if(weekOfYear != currentWeekOfYear){
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("weekOfYear", currentWeekOfYear);
        editor.commit();
        // Your once a week code here
    }
    

    我并不是主张这比警报解决方案更好。我只是展示了一种不同的方法。

    【讨论】:

    • 但是这段代码实际包含在哪里?由于此时应用已关闭(未运行)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 2020-09-27
    • 2019-10-09
    • 1970-01-01
    • 2023-04-08
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多