我正在创建一个小应用程序登录屏幕和注册屏幕以及另外四个屏幕。我在SharedPreference中存储数据。如果用户在20分钟后访问应用程序,则必须自动重定向到登录屏幕。我对CountDownTimer知之甚少,但我不知道如何在这里使用它。帮助解决我的问题。
答案 0 :(得分:2)
将上次登录的时间添加到共享首选项,并在成功登录时更新值。每次打开应用程序时检查是否到期。
MainActivity:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState){
int timeOfLastLogin = getPreferenceInt("last_login");
if(System.currentTimeMillis() - timeOfLastLogin > 1000*60*20){
Intent loginIntent = new Intent(this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
}
//...
}
登录活动:
public class LoginActivity extends Activity {
//...
public void login(){
// Your login logic
setPreferenceInt("last_login", System.currentTimeMillis());
}
}
答案 1 :(得分:1)
在那种情况下。
当用户从Activity
退出应用时,在ondestroy()
方法中保存用户退出应用时的当前时间。
@Override
public void onDestroy(){
Calendar cal = Calendar.getInstance();
editor.put("lastLoggedIn",calendar.getTime().getTime());
editor.commit();
super.onDestroy();
}
当用户登录再次进入时,请检查onCreate()
@Override
public void onCreate(Bundle instance){
...
long oldTime = pref.getLong(this,"lastLoggedIn",0);
if(oldTime != 0){
Calendar cal = Calendar.getInstance();
long currentTime = cal.getTime().getTime();
long diff = currentTime - oldTime;
long diffSec = diff / 1000;
long min = diffSec / 60;
if(min > 20){
//alert
}
}
...
}