Android:每次活动完成后生成一个新的SessionID?

时间:2014-07-30 00:10:19

标签: android sqlite

我正在创建一个包含3个游戏的Android应用程序,所有这些都在单独的活动中。每场比赛后,会话的详细信息将写入SQlite数据库(例如得分等)。

我希望包含一个为每个游戏生成会话ID的功能,并且在所有活动中都是一致的和更新的。即不是每个人的单独身份证明。

例如:

Game 1 session completed: SessionID=1
Game 2 session completed: SessionID=2
another Game 2 session completed: SessionID=3
Game 3 session completed: SessionID=4 etc...

我该怎么办?

与此同时,我只是为SessionID使用生成的随机数(x),在所有活动中也不一致:

//getting random number for sessionid (WILL BE CHANGED EVENTUALLY)
            Random ran = new Random();
            int x = ran.nextInt(1) + 3000;


            //Adding the new Score to the database. NOTE: SESSIONID NEEDS TO BE SORTED AND CHANGED TO PRIM KEY EVENTUALLY
            db.addScore(new Score(x, "Multiplication", UserName.getUserName(), averageMedLevel,medMax, 
                    averageAttLevel,attMax, score,myDate));

1 个答案:

答案 0 :(得分:1)

根据the documentation here,您可以在数据库中指定类型为INTEGER PRIMARY KEY AUTOINCREMENT的列,这将确保;

The ROWID chosen for the new row is at least one larger than the largest ROWID that has
ever before existed in that same table. If the table has never before contained any data,
then a ROWID of 1 is used.

这样可以节省您对sessionIds的控制权,并让它们由数据库的ROWID决定。

如果您确实想跟踪自己的SessionIds,可以使用以下语法将它们作为insert语句的一部分插入;

INSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello');

对于滚动自己的唯一性和排序,请考虑使用时间戳作为SessionId的主要部分(例如“yyyyMMddHHmmss +游戏ID”)。