Android - 活动行为?
Posted
技术标签:
【中文标题】Android - 活动行为?【英文标题】:Android - Activity behaviour? 【发布时间】:2011-08-02 09:59:46 【问题描述】:我有一个以 TabScreen 作为主屏幕的小型 android 应用程序。我有一个小问题,我的应用程序当前失去了对用户上一个活动的关注。
这是场景:
-
用户启动应用程序
应用程序显示登录屏幕
用户输入登录详细信息并转到选项卡屏幕
用户通过主页键离开应用程序
用户按下应用程序图标返回应用程序并再次显示登录屏幕
在这种情况下,我希望应用程序返回到最后一个已知显示的 Activity。
我现在要做的是将登录屏幕作为 Main/Launcher Actvitiy 启动,然后在输入正确的凭据后启动选项卡屏幕活动并完成登录活动。
是否有启动模式或我应该使用什么来实现这一点?
编辑:更多信息
Tab 屏幕就像这样启动:
Intent intentTabActivity = new Intent(getApplicationContext(), TabScreenActivity.class);
startActivity(intentTabActivity);
通过主页按钮离开应用程序。
我打算保持登录状态并绕过登录,但是在我创建的较小应用程序上,应用程序会自动返回到最后显示的活动,并且不会每次都返回到初始启动器屏幕,我想知道为什么这不是此应用程序中的相同行为。
根据我的另一个问题HERE,调试和签名版本的行为似乎有所不同。
这一直在真实设备上进行测试。
【问题讨论】:
需要更多信息。您究竟是如何启动标签屏幕的?他们是通过返回按钮还是主页按钮离开?为什么登录后不保持登录状态并绕过登录屏幕? 你在哪里检查这个..?在设备或模拟器上..? 查看我上面的编辑以回答您的问题 【参考方案1】:这是正确的行为。基本上,一旦活动进入后台,它就会受到 Android DVM 的摆布。如果 DVM 觉得它需要空间,它基本上会继续执行并终止您的应用程序。因此,一旦您尝试从图标启动应用程序,它实际上会从头开始重新启动它。
但是,要解决您的问题,您应该在登录屏幕上有一个“自动登录”或“记住密码”之类的复选框,并且当用户每次打开应用程序时检查它时,它应该会自动让您登录并进入下一个屏幕.此行为需要您使用某种持久性存储来实现。
【讨论】:
我知道 DVM 可能会随时终止应用程序,但不应立即终止它,或者至少这是我对其他应用程序的经验,我确实有一个记住我的功能,但是这个只会返回到主选项卡,而不是用户打开的最后一个选项卡,所以这不是我想要的行为。在调试版本中,我的应用可以按我的意愿运行,它会返回到上次查看的 Activity,但是在签名版本中,它总是会打开登录 Activity。 那一刻它真的取决于设备及其内存资源。因此,如果您的设备是全新的,运行的应用程序/服务几乎为零,那么您的应用程序将不会受到伤害。另一个因素也是您检索应用程序所花费的时间。 所以在我按下应用程序图标的那一刻,在 LoginActivity 上调用了 resume,所以我认为这意味着我的应用程序没有重新启动,但正在重新获取它只是它获得了登录屏幕而不是上次打开的屏幕 不,只调用 onResume()。【参考方案2】:可能是因为您正在使用 onPause() 以便标签在传递标签时执行一些操作。 所以最终当按下 home 键时 onPause() 将被调用,这可能会导致你遇到这个问题。也许你必须检查你的 onPause() 这种情况。
【讨论】:
我已经检查并删除了 onPause() 方法中的所有代码,但仍然没有改善行为。【参考方案3】:在主页按钮上仅调用 onStop,您是否正在完成 onStop 上的活动?如果不是,它会保留堆栈顶部的活动。
【讨论】:
不,我没有在我的应用程序的任何地方实现 onStop()。 覆盖标签屏幕的 onDestroy() 并放置一些日志以查看按下的活动是否被破坏。 它必须先通过 onPause() 不是吗? 是的,它应该......你能做这个启动器活动,看看它是否仍然是相同的行为?如果您的上述代码导致任何问题,我正在尝试消除。如果行为相同..很可能您的活动实施中一定有一些东西。以上是关于Android - 活动行为?的主要内容,如果未能解决你的问题,请参考以下文章