Android 存储并计算运行总计+;带领域的移动平均线

Android 存储并计算运行总计+;带领域的移动平均线,android,sum,window,realm,average,Android,Sum,Window,Realm,Average,我正在制作我的第一个Android应用程序,一个跑步里程统计应用程序,包括每天、每周、每月和每年的跑步里程。以及这些类别的累积平均值。我正在使用一个领域数据库来保存我的Run对象的每个实例,其中包括运行的英里数和发生的Date时间 生成或组织这些统计数据的最有效方法是什么?每次打开应用程序时,都可以运行保存在数据库中的每个run,并计算数字,但我认为最好尝试将这些信息保存在领域数据库中的持久Stats对象中。我认为这个统计对象需要当前平均值和该数字中反映的最近日期(以知道何时更新它们是合适的)

我正在制作我的第一个Android应用程序,一个跑步里程统计应用程序,包括每天、每周、每月和每年的跑步里程。以及这些类别的累积平均值。我正在使用一个领域数据库来保存我的
Run
对象的每个实例,其中包括运行的英里数和发生的
Date
时间

生成或组织这些统计数据的最有效方法是什么?每次打开应用程序时,都可以运行保存在数据库中的每个
run
,并计算数字,但我认为最好尝试将这些信息保存在领域数据库中的持久
Stats
对象中。我认为这个统计对象需要当前平均值和该数字中反映的最近日期(以知道何时更新它们是合适的)

如何按周、月、年等对
运行进行有效分组?我能想到的最好方法是在日历上用
Run.Date
对象获取一个
Calendar
对象setTime(),并使用Calendar方法比较两个
Run
是否发生在同一天、周或月,等等。似乎不太容易单独操作和比较
日期
对象

public class Run extends RealmObject{
    private Date date;
    private double miles;

    public Run(){}

    public Run(Date date, double miles) {
        this.date = date;
        this.miles = miles;
    }


    //getters and setters
}

希望我的描述足够清晰。非常感谢一般信息组织的建议和最佳做法,谢谢

默认情况下,我认为对它们进行分组非常容易,考虑到定义正确的RealmQuery会给您一个运行列表,实际上是一个“组”,由您指定的“日期”作为下限和上限。对,假设我有一个跨越3个月的运行列表。在这3个月中,我是否必须每周手动查询该列表?这似乎不是很有效,但这可能是唯一的方法,itRealm不支持移动平均(或任何Savitzky-Golay过滤器),因此您需要手动查询。欢迎您在我们的Github存储库中创建一个问题。默认情况下,我认为对它们进行分组非常容易,考虑到定义正确的RealmQuery会为您提供一个运行列表,实际上是一个“组”,由您指定的“日期”作为下限和上限。对,假设我有一个跨越3个月的运行列表。在这3个月中,我是否必须每周手动查询该列表?这似乎不是很有效,但这可能是唯一的方法,itRealm不支持移动平均(或任何Savitzky-Golay过滤器),因此您需要手动查询。欢迎您在我们的Github存储库中创建问题。