作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
解释: 在我的应用程序中, token 将每 24 小时更改一次。所以,我想在 sharedpreferences 中将旧数据存储 23 小时,好的,我做到了。现在,如果超过 23 小时,我的新身份验证 token 将替换我在 sharedpreference 中的新数据。这意味着我的 token 将在接下来的 23 小时内有效。
如何查看自第一次身份验证时间起已过去 23 小时?
这是我获取 token 并保存到 sharedpreference 的代码
private void Authentication_App_Service(String responseStr) {
int hours=0;
int minutes=0;
try {
Calendar c = Calendar.getInstance();
hours = c.get(Calendar.HOUR_OF_DAY);
Log.e("HOUR OF DAY",""+hours);
minutes = c.get(Calendar.MINUTE);
}
catch (Exception e){
e.printStackTrace();
}
try {
JSONObject jobj_res = new JSONObject(responseStr);
String status = jobj_res.getString("status");
String status_code = jobj_res.getString("status_code");
statusCode = Integer.parseInt(status_code);
if (status.equals("True") || status.equals("true")) {
JSONObject a_res = jobj_res.getJSONObject("auth");
main_public_access_token = a_res.getString("access_token");
SharedPreferences sharedTimer=this.getSharedPreferences("SaveTime",Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedTimer.edit();
editor.putString("accessToken", main_public_access_token);
editor.putInt("authentication_time", hours);
editor.commit();
} else {
dialog_popup();
}
} catch (JSONException e) {
e.printStackTrace();
}
Log.e("checking value >> ", ""+ main_public_access_token);
if(main_public_access_token.equals("")){
dialog_popup();
} else {
Intent i = new Intent(getBaseContext(),
MainActivity.class);
i.putExtra(key_access_token, main_public_access_token);
startActivity(i);
finish();
}
}
以上方法每23小时运行一次,23小时前不再调用此方法。
我在 23 小时前使用了来自 sharedpreference 的 token 。请帮我解决这个问题。
最佳答案
为此使用 AlarmManager。将其设置为每 23 小时重复一次。使用以下代码
//Create a new PendingIntent and add it to the AlarmManager
Intent intent = new Intent(this, RingAlarm.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,
12345, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am =
(AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
23 * 60 * 60 * 1000,pendingIntent);
以上编写的代码将在每 23 小时后触发一个 Intent 。如果您需要更多解释,请告诉我。如果有帮助,请将其标记。
关于android - 如何在 android 中将数据存储在 sharedpreferences 中 23 小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980265/
我是一名优秀的程序员,十分优秀!