安卓背词客开发日记
开发的第30天-验证是否首次登陆和连续登录
2019-3.11
今天主要实现的是单词复习的功能。用户每天需要复习1,3,5,7天前记忆的单词。并且今天如果不复习,会保留到明天。提取问题
1. 验证用户每天是不是第一次登录;
2.单词如何验证需要复习和保持到明天
-
单词如何验证需要复习用户每次记忆单词都会有时间标记,我们只要取出来这个时间标记,然后比较和现在的时间差就知道了。
-
实现用户要复习的单词保持到明天,初步计划是,在要复习的单词表中,将今天要复习的单词的know设置为0,并带他们复习结束后,都将在设置成1.这样用户就算是没有复习,那今天的单词也会累积到明天,我们只要在每天第一次开机时将用户今天要记忆复习的单词的know
设置为0即可。那麽问题来了 , -
怎末实现分辨用户是不是第一次登录呢。我们可以用SharedPreferences去记录一个时间戳,然后用户每次打开app是获得另一个时间戳。
然后相比较是不是同一天就可以了。此外还可以相比较时间的差值得出是不是连续登录。
这些都涉及到时间比较的问题,小白我自己想了个办法,大神欢迎指教。
时间是以字符串的形式存在数据库或者sharedpreferences存在本地。我们可以先定义字符串的格式。可以自己定义
public static String gettime() {
Date day=new Date();
SimpleDateFormat df = new SimpleDateFormat("MM-dd HH:mm");
return df.format(day);
}
等固定下来时间字符串的格式后。就可以进行处理了
得到的字符串为
3-11 19:32
使用字符切割函数string.split("-") 切分字符得到 String [ ]数组
取后半段就是String[1] 得到的是 11 19:32
然后使用再次split(" ")这次取得前半段 ,得到字符11 然后使用字符转 integer 方法 Integer.valueOf(string);得到数值 然后进行比较。下面是代码
public static int get_time_def(String Data1, String Data2) {
int def = 0;//去除两边空格
String Data1_time = Data1.trim();
String Data2_time = Data2.trim();
//对data1处理
String[] temp1= Data1_time.split("-");
String Data1_day_with_hour = temp1[1];
String[] temp2=Data1_day_with_hour.split(" ");
String Data1_day = temp2[0];
//对data2处理
String[] temp3= Data2_time.split("-");
String Data2_day_with_hour = temp3[1];
String[] temp4=Data2_day_with_hour.split(" ");
String Data2_day = temp4[0];
if (temp1[0].equals(temp3[0])) {//判断是不是同一个月
//转整型
int int_day1 = Integer.valueOf(Data1_day);
int int_day2 = Integer.valueOf(Data2_day);
def = int_day1 - int_day2;
}else {
def=-1;
}
return def;
}
}
判断是不是同一天需要将上次登录时间和本次登录时间同时传入,
如果def=0;则是同一天.。
如果def=1 说明是第二天登录,并且连续登录。
若大于2 则不连续登录。
若=-1 则不好判断。