在android中从后台捕获应用程序的返回

时间:2011-12-27 13:31:16

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

我创建了一个个人联系簿,根据群组,联系人,编辑,查看,删除多个等的业务要求,大约有10个活动。

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

此外,请注意,如果不应显示同一联系簿应用程序,登录屏幕的其他活动。

我尝试通过覆盖各种活动中的功能进行登录来尝试使用每个活动的onResumeonStartonPauseonStop个事件,但这并不是如果应用程序在前台并且只是一个活动被改变就满足了,那么这些也被称为。

请建议,谢谢!

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

onRestart()的说明。

我希望它有所帮助..

答案 3 :(得分:0)

我做了类似的事情,我的解决方案无疑是hacky,但它对我有用。

我的所有活动总是来自我所有应用程序中的公共基类。我称之为ActivityBase,供参考(当然它扩展了Activity)。在ActivityBase.onPause中,我保存当前时间millis,您可以选择保存派生类的名称,以确切知道最后暂停的Activity。如果您需要在应用程序处于后台并返回到前台时运行代码,则可以检查当前时间与应用中最后一个活动暂停的时间之间的差异。如果应用程序仍在前台,则差异不应大于暂停一个活动并恢复下一个活动所需的最长时间。如果它大于一两秒(这是hacky部分,你选择了一个任意时间测量,这意味着“太长时间不能成为应用内导航”),那么你可以调用应用程序运行的任何代码正在回到前台。

答案 4 :(得分:0)

最后,我自己找到了。

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

谢谢,提出方法的每个人,让我知道在任何地方走错路或走错路。还要感谢@midoalageb ..!

由于