安卓 几千名用户排队在同一个ipad上的一个app的页面提交数据,每个用户在30分钟内只能提交一次,安卓代码
时间: 2024-03-27 22:35:52 浏览: 15
在多个用户共用一个 iPad 的情况下,您需要记录每个用户最后一次提交数据的时间,而不是记录整个设备的最后一次提交时间。可以使用一个 Map 来保存每个用户的最后一次提交时间,键为用户的唯一标识,值为最后一次提交数据的时间戳。
以下是示例代码:
```java
// 创建一个 ConcurrentHashMap 用于保存每个用户的最后一次提交时间
ConcurrentHashMap<String, Long> lastSubmitTimeMap = new ConcurrentHashMap<>();
// 在用户提交数据时检查时间间隔是否超过30分钟
public void onSubmitData(String userId) {
// 获取当前用户最后一次提交数据的时间
long lastSubmitTime = lastSubmitTimeMap.getOrDefault(userId, 0L);
// 获取当前时间
long currentTime = System.currentTimeMillis();
// 检查时间间隔是否超过30分钟
if (currentTime - lastSubmitTime >= 30 * 60 * 1000) {
// 允许用户提交数据
// TODO: 提交数据的相关代码
// 更新当前用户最后一次提交数据的时间
lastSubmitTimeMap.put(userId, currentTime);
} else {
// 提示用户需要等待一段时间后再次提交
Toast.makeText(this, "您需要等待一段时间后才能再次提交数据", Toast.LENGTH_SHORT).show();
}
}
```
在代码中,我们使用了一个 ConcurrentHashMap 来保存每个用户的最后一次提交时间,这是一个线程安全的 Map,可以安全地在多个线程中进行读写操作。获取当前用户最后一次提交数据的时间时,使用了 `getOrDefault()` 方法,避免了用户第一次提交时可能会出现的空指针异常。
需要注意的是,如果您的 app 有退出登录的功能,需要在用户退出登录时清除该用户的最后一次提交时间,否则下一个使用该设备的用户可能会受到影响。