Android 如果用户不是';t激活5分钟:

Android 如果用户不是';t激活5分钟:,android,android-intent,login,onresume,Android,Android Intent,Login,Onresume,如果用户在应用程序中有5分钟未处于活动状态,我需要启动登录活动 ,没有考虑他离开申请表的原因。(5分钟内不活动表示用户没有向服务器端提交任何操作) 我的应用程序类中有一个日期变量: private Date timeOfLogin; 当用户提交登录时会保存该信息,在某些使用点,用户可以接到电话或电子邮件 一封邮件,将离开申请。现在,这可以在应用程序的任何屏幕上发生。现在,当他再次打开应用程序/结束电话后返回应用程序时,我需要再次显示登录屏幕,如果5分钟或更长时间过去,则不需要显示他最后的活动

如果用户在应用程序中有5分钟未处于活动状态,我需要启动登录
活动
,没有考虑他离开申请表的原因。(5分钟内不活动表示用户没有向服务器端提交任何操作)

我的
应用程序
类中有一个
日期
变量:

private Date timeOfLogin;
当用户提交登录时会保存该信息,在某些使用点,用户可以接到电话或电子邮件 一封邮件,将离开申请。现在,这可以在应用程序的任何屏幕上发生。现在,当他再次打开应用程序/结束电话后返回应用程序时,我需要再次显示登录屏幕,如果5分钟或更长时间过去,则不需要显示他最后的活动

怎样才能做到呢?如果登录时间与当前日期之间的差异大于5分钟,我是否必须覆盖我在应用程序中的每个活动的每个
onResume
,并启动登录
activity
?还是有更好的方法

任何帮助都将不胜感激


谢谢。

拥有一个所有其他活动都可以扩展的活动,并将逻辑放在该活动的onResume中。(您可能会发现这种做法在许多其他方面也很有用)

onFinish()
显示
登录
对话框的ResponseHandler类中创建一个带有5分钟倒计时的
倒计时程序。如果有任何响应,请取消计时器并重新启动。

为activity touch listener定义一个计时器,并在用户执行某项操作时重置计数器。您可以使用服务检查每个If用户每5分钟提交一次操作。通过active,我的意思是没有与服务器交互,不一定与应用程序交互。所以最后一次用户触摸事件并不重要。@Raghunandan,如果用户在最后5分钟内没有提交操作,我会在服务中做什么?你能给出一个更解释性的例子吗?或者使用广播接收器。如果用户在5分钟内未提交,则广播。在活动中注册接收者。若你们收到一个广播弹出窗口,就会出现一个对话框,要求用户登录或导航到登录页面。只是个主意。我还没有尝试过这个。这实际上是一个解决方案,如果我没有找到任何其他方法,我最终会选择它。但目前我正试图避免在所有活动中覆盖onResume,并寻找一个更优雅的解决方案(如果存在的话)。答案不是在所有活动中覆盖onResume。答案是在一个活动中重写,并让其他活动扩展它。这听起来像是一个正确的面向对象的解决方案。是的,我理解这一点,但最终的结果是,我将覆盖所有活动中的所有onResume方法,因为所有这些方法都将扩展此活动。如果我的应用程序中有FragmentActivity,那么我也应该为FragmentActivity创建这种浅层对象。目前,我认为我应该避免使用它,并想知道是否有一个更优雅的解决方案,可以解决我一直按照adonal3的建议在我的所有应用程序中使用的问题。这一次您需要onResume,下一次您将需要onDestroy、onCreate或像hideKeyboard()这样的常用方法。如果您有一个没有片段的FragmentActivity,请不要担心。如果你90%的活动都使用片段,我会让它们都继承自同一个MyFragmentActivity感谢@Pinhassi的鼓励。听起来像是一个有趣的解决方案,你能再解释一下吗?您所说的onFinish()是什么意思?ResponseHandler不是一个活动,它是一个简单的java类,它不控制所有其他活动,所以即使计时器计数器完成,我也会触发登录屏幕。用户按下“后退”按钮将使其返回到以前的活动。倒计时计时器具有onTick和onFinish方法。在持续时间过期时调用onFinish。你可以重写onBackPress并再次显示对话框或终止任务。我刚刚编写了一个带有类调用倒计时的测试应用程序,在该类中我有一个倒计时计时器,并在构造函数中启动它。即使当我存在我的应用程序时,计时器仍然会卡住。所以我认为我的解决方案会奏效。您将登录屏幕设置为单个实例,并在可能的情况下取消应用程序中的其他任务。