gpt4 book ai didi

android - 当应用程序处于后台时运行注销方法

转载 作者:行者123 更新时间:2023-11-29 01:39:14 25 4
gpt4 key购买 nike

我有一个 Android 应用程序需要用户登录凭据才能访问某些数据。我想做的是,当用户决定退出整个 APP,而不是 Activity 时,如果不活动时间超过 20 秒,它将调用注销方法。因此,我需要一个能够检查应用程序是否在后台运行的代码,这个应用程序应该补充完成以下代码:

空闲注销方法:

   public void IdleLogout(){
Log.i("RootActivity:IdleLogout()","******APP LOGGEDOUT******");
SharedPreferences pref = getSharedPreferences(getString(R.string.pref_current_user), MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear(); // CLEAR ALL FILEDS
editor.commit(); // COMMIT CHANGES
setloginButton(); // Change logout button to login
RootActivity.alertDialog(RootActivity.this,getCustomIntent(PropertyActivity.class)).create().show();
//startActivity(getCustomIntent(PropertyActivity.class)); //Return page to PROPERTYACTIVITY.
}

将占用当前 Activity 时间

@Override
public void onStop(){
super.onStop();
//get the current time on exit
curDate = new Date();
Log.i("RootActivity:onStop()","******curDate=******"+curDate);
}

当用户恢复应用程序时将占用 Activity 时间

  @Override
protected void onResume() {
super.onResume();
setloginButton();
EnquiryActivity.PROPERTY = 0;
//EDITED FOR SESSION LOGOUT
//Get the Resume Time
resumeDate = new Date();
Log.i("RootActivity:onResume()","******resumeDate=******"+resumeDate);
long diff = resumeDate.getTime() - curDate.getTime();
long secInt = diff / 1000 % 60; //conversion of milliseconds into human readable form
Log.i("RootActivity:onResume()","******sectInt=******"+secInt);
if (secInt > Inactivity_Timeout){// SET EXIT SCREEN INTERVAL LOGOUT
IdleLogout();
}
}

最佳答案

您需要实现一个在后台运行并且您的应用能够与之通信的服务。为此,您应该在 Application.onCreate(...) 方法中启动该服务。然后,您应该创建一个基本 Activity (您的 Activity 将继承),并实现 onPause 和 onResume 方法以向服务触发 Intent,表明它们已进入 onPause/onResume。

onPause(...) 中触发的 Intent 应指示服务开始倒计时(20 秒左右)。

onResume(...) 中触发的 Intent 应指示取消倒计时的服务。

当您的最后一个 Activity 进入后台时,将触发 onPause() 方法,而不会在以后触发 onResume(取消倒计时),从而导致 session 被清除如果时间过去了。

如果 onStop 被调用,您将无法在 Activity 中显示对话框(因为它已经被销毁),所以我鼓励您使用带有 Theme.Dialog 的 Activity (或者它的一些味道)。

您可以使用 LocalBroadcastManager 与您的服务通信,并且不要忘记在您的 Service.onCreate(...) 中以编程方式设置 BroadcastReceiver。 p>

了解代码并不总是最好的答案。

希望它能帮助您更深入地了解 Android 平台。

问候。

关于android - 当应用程序处于后台时运行注销方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com