Android 应用程序生命周期
Android Application Lifecycle
我看到很多关于 Activity 生命周期的答案,其中大部分对我来说都很清楚。我正在寻找的是应用程序生命周期。我有以下情况:
- 应用程序启动 - 使 PIN 无效
- 如果 PIN 过时或无效,则必须输入 PIN
- 应用程序后台运行(Android 主屏幕可见)- 使 PIN 无效
- 应用程序在前台运行(应用程序再次可见)- 转到步骤 2
有了 Activity 生命周期,即使不是不可能,也很难实现。有什么建议吗?
当你的应用程序在后台(不再可见)时,调用的方法是onStop()
,当应用程序在前台时,onStart()
然后onResume()
将被调用(onCreate()
也可以调用)。
问题是,您应该做的是在 onStop()
中使 PIN 无效,然后在 onResume()
中请求 PIN。这将始终让您的应用程序要求输入 PIN:应用程序第一次启动时以及在后台运行时。
申请开始-onCreate()
/onStart()
获取onCreate
或onStart
或onResume()
中的pin(查看pin的状态。
3.Application 已后台运行 - onPause()
- 使您在 onPause() 方法上的 pin 无效
4.The 应用程序在前台 - onResume()
- 在 onResume()
中执行步骤 2
受到 Doomsknight 向我指出的解决方案的启发,我构建了这个解决方案,但没有按照提议的答案中提出的计时器构建这个解决方案。这是我的 mainapplication.cs:
的代码
public void OnActivityPaused(Activity activity)
{
_lastActivity = DateTime.Now;
}
public void OnActivityResumed(Activity activity)
{
CrossCurrentActivity.Current.Activity = activity;
DateTime now = DateTime.Now;
TimeSpan span = now - _lastActivity;
if (span.TotalMilliseconds > 2000)
{
Notifier.Classes.Settings.IsPinValid = false;
}
_lastActivity = now;
}
我看到很多关于 Activity 生命周期的答案,其中大部分对我来说都很清楚。我正在寻找的是应用程序生命周期。我有以下情况:
- 应用程序启动 - 使 PIN 无效
- 如果 PIN 过时或无效,则必须输入 PIN
- 应用程序后台运行(Android 主屏幕可见)- 使 PIN 无效
- 应用程序在前台运行(应用程序再次可见)- 转到步骤 2
有了 Activity 生命周期,即使不是不可能,也很难实现。有什么建议吗?
当你的应用程序在后台(不再可见)时,调用的方法是onStop()
,当应用程序在前台时,onStart()
然后onResume()
将被调用(onCreate()
也可以调用)。
问题是,您应该做的是在 onStop()
中使 PIN 无效,然后在 onResume()
中请求 PIN。这将始终让您的应用程序要求输入 PIN:应用程序第一次启动时以及在后台运行时。
申请开始-
onCreate()
/onStart()
获取
onCreate
或onStart
或onResume()
中的pin(查看pin的状态。
3.Application 已后台运行 - onPause()
- 使您在 onPause() 方法上的 pin 无效
4.The 应用程序在前台 - onResume()
- 在 onResume()
受到 Doomsknight 向我指出的解决方案的启发,我构建了这个解决方案,但没有按照提议的答案中提出的计时器构建这个解决方案。这是我的 mainapplication.cs:
的代码 public void OnActivityPaused(Activity activity)
{
_lastActivity = DateTime.Now;
}
public void OnActivityResumed(Activity activity)
{
CrossCurrentActivity.Current.Activity = activity;
DateTime now = DateTime.Now;
TimeSpan span = now - _lastActivity;
if (span.TotalMilliseconds > 2000)
{
Notifier.Classes.Settings.IsPinValid = false;
}
_lastActivity = now;
}