【问题标题】:Catch returning of application from background in android在android中从后台捕获应用程序的返回
【发布时间】:2012-01-28 12:47:57
【问题描述】:

我已经创建了一个个人通讯录,根据群组、联系人、编辑、查看、删除-多个等的业务需求,大约有 10 个活动。

如果应用程序通过主页按钮或其他应用程序移动到后台,我需要在应用程序从后台返回时捕获事件以显示登录屏幕,每次。

另外,请注意,如果同一通讯录应用程序的另一个活动,登录屏幕不应显示。

我尝试使用每个活动的onResumeonStartonPauseonStop 事件,方法是覆盖各种活动中的登录功能,但这并不满足,就好像应用程序在前台而只是一个活动被改变,然后这些也被调用。

请指教,谢谢!!!

【问题讨论】:

标签: android android-layout android-emulator android-ndk android-manifest


【解决方案1】:

最后,我自己找到了。

我设法为所有活动编写了一个基类,其中分别完成了对 Intent 的设置和获取变量。 因此,如果应用程序移动到后台并稍后进入前台,则找不到意图变量,我在此处显示登录屏幕,而不是进入应用程序。

谢谢,建议方法的每个人,如果在任何地方走错路或走错路,请告诉我。也感谢@midoalageb..!

谢谢

【讨论】:

    【解决方案2】:

    我做了类似的事情,虽然我的解决方案很老套,但它对我有用。

    我的所有活动始终派生自我所有应用程序中的公共基类。我称它为 ActivityBase,以供参考(当然它扩展了 Activity)。在 ActivityBase.onPause 中,我保存当前时间毫秒,您可以选择保存派生类的名称,以准确了解上次暂停的 Activity。如果您需要在应用程序已经在后台并返回到前台时运行代码,您可以检查当前时间与应用程序中最后一个 Activity 暂停时间的差值。如果应用程序仍在前台,则差异不应大于暂停一个 Activity 并恢复下一个 Activity 所需的最长时间。如果它大于一两秒(这是骇人听闻的部分,您正在选择一个任意时间度量,这意味着“太长而不能成为应用内导航”),那么您可以调用应用时应该运行的任何代码正在返回前台。

    【讨论】:

      【解决方案3】:

      这种功能的最佳位置可能是onCreate 方法。它仅在从头开始创建应用程序时调用。相反的方法是onDestroy,它仅在系统为了释放一些内存而终止您的应用程序时调用(这种情况很少发生),或者您的应用程序被某种任务杀手明确终止。这意味着当您的活动进入后台然后返回前台时 - onCreate 不会被调用,您应该假设这一点。希望这会有所帮助。

      【讨论】:

      • 我猜你错过了我想说的,我想在每次应用程序进入前台时要求登录。
      【解决方案4】:

      尝试覆盖活动类的 onRestart()。

      onRestart() 的描述。

      希望对你有帮助..

      【讨论】:

      • 每次activity进入前台时都会调用onRestart,虽然应用程序正在运行,但我只需要检查应用程序是否来自后台。
      • 文档说..'当当前活动被重新显示给用户时(用户已经导航回它)'。这意味着它不会在活动第一次启动时被调用。这不是你想要的吗?
      【解决方案5】:

      我认为您可以在 onPause()onStop() 时将布尔变量设置为 true,并在 onResume() 中检查此变量以显示登录对话框与否。如果您需要更持久的方式,可以将其保存在 onPause()onStop 的共享首选项中,并将其从 onDestroy() 的共享首选项中删除。但请注意,如果焦点中的另一个应用需要内存,Android 垃圾收集器将从内存中删除您的应用。

      【讨论】:

      • 当我在我的应用程序中使用 10 个活动时,我从一个活动转移到另一个活动,每次调用 onPause 和 onResume 时,不应该询问登录,对吗?每次应用进入前台时都应该询问登录。
      • 您可以将一个变量从 Activity 传递给另一个(在 Intent 中),然后在被调用 Activity 的 onResume 中将其删除。如果变量不包含在 Intent 中,这意味着调用不是来自另一个 Activity,因此您可以显示登录。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多