我的应用程序有一个登录工具,通过在共享首选项中存储布尔值来维护登录用户的会话。
我希望应用程序在晚上12点自动注销,无论设备是否空闲。因此,下次用户打开应用程序时,他会获得登录页面并且计时器设置为自动注册晚。 我如何实现这一目标?我在哪里可以设置每天自动注销的计时器??
请帮忙!在此先感谢
答案 0 :(得分:1)
您可以使用AlarmManager类自动注销会话。这是登录后应该调用的方法。
private void callAutoLogout() {
Intent alaramIntent = new Intent(LoginActivity.this, BootCompletedIntentReceiver.class);
alaramIntent.setAction("LogOutAction");
Log.e("MethodCall","AutoLogOutCall");
alaramIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alaramIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 19);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 0);
AlarmManager alarmManager = (AlarmManager) this.getSystemService(ALARM_SERVICE);
Log.e("Logout", "Auto Logout set at..!" + calendar.getTime());
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
然后将在19.59触发BootCompletedIntentReceiver广播接收器。您可以在广播接收器中编写您的操作。
public class BootCompletedIntentReceiver extends BroadcastReceiver
{
@Override
public void onReceive(final Context context, Intent intent)
{
if("LogOutAction".equals(intent.getAction())){
Log.e("LogOutAuto", intent.getAction());
Toast.makeText(context, "Logout Action", Toast.LENGTH_SHORT).show();
//Do your action
}
}
}
答案 1 :(得分:0)
这是你使用AlarmManager的方法,你需要做的就是创建一个总是在午夜之前触发的重复警报,
按照这个,
here是链接,只是为了详细信息
否则,只要在午夜后打开您的应用程序,只需重置所有内容。
答案 2 :(得分:-1)
我认为你不需要在晚上12点进行注销。当应用程序打开时,只需检查12 o时钟是否已经过,然后触发注销然后转到登录活动。这更容易实现和测试。