即使应用程序未运行,如何每天更新TextView?

时间:2018-08-18 09:31:57

标签: java android android-calendar

假设我有一个简单的日间计数应用程序,我有一个数字,并且每天数字都会增加1,并且当用户关闭该应用程序时,状态会保存。

我希望应用程序将数据存储在文件中,因此不包括数据库

3 个答案:

答案 0 :(得分:3)

使用SharedPreference保存当前日期,并计算变量, 每次应用检查天数差异并添加到计数变量中时,都会更新上述给定当前日期和变量中的SharedPreference

让我们说

保存在SharedPreference

中的值
count = system date - current date;
current date = system date;

说5天后打开应用程序

count = systemdate - current date (which was 18-08-2018);

current date = system date;

答案 1 :(得分:0)

如果您需要每天更新该数字(如果用户打开或不打开该应用,则可以这样做):

首次用户启动应用时,您会获得当前日期(例如,使用Joda-Time

Datetime myTime = DateTime.now()

,然后将其存储在某个地方,例如SharedPreferencesRoom数据库。

然后,每次需要显示数字时,都会从存储它的位置(数据库或SharedPreferences)获取日期,并计算与当前日期的差,如下所示:

 Days days = Days.daysBetween(myTime , DateTime.now());
 int number = days.getDays();

答案 2 :(得分:0)

为了保持代码的简洁性,我使用了共享优先级来存储数据和毫秒(毫秒)作为日期。

   int yourNumber = 0;
        SharedPreferences save_data = getSharedPreferences("app", MODE_PRIVATE);
        SharedPreferences.Editor save_edit = getSharedPreferences("app", MODE_PRIVATE).edit();


        int days = save_data.getInt("days", -1);//Get Days from the preferences


        if (days < yourNumber) {
            //opened first time; no saved data found ;so save the initial data
            save_edit.putLong("date", Calendar.getInstance().getTimeInMillis());
            save_edit.putInt("days", yourNumber);
            save_edit.commit();
        } else {
            //Already saved data found;
            long oneDayInMilliSeconds = 86400000L;
            long old_date = save_data.getLong("date", Calendar.getInstance().getTimeInMillis());
            long current_date = Calendar.getInstance().getTimeInMillis();
            long difference = (old_date + oneDayInMilliSeconds) - current_date;
            if (difference > 0) {
                //One Day Passed; Add One To previous Saved Days


                save_edit.putInt("days", save_data.getInt("days", 0) + 1);//Get Days
                save_edit.putLong("date", Calendar.getInstance().getTimeInMillis());//update the date
                save_edit.commit();
            }
        }