Android:决定显示启动器中的一个活动
我在开发一个复杂的Android用户界面时遇到了一个严重的问题。我有ActivityA(登录,然后在调用finish()self之后转到B Activity)和ActivityB(在ActivityA之后显示用户)。用户进入ActivityB后(登录成功后),有时网络会被切断,我需要让用户返回ActivityA。所以我在ActivityB中收到一条广播消息,当ActivityB收到广播消息时,它也应该完成自我并返回ActivityA。当ActivityB处于前台时,此功能可以正常工作。但当ActivityB处于后台时,它无法接收广播消息。我如何解决这个问题?非常感谢。您必须在onPause或onStop中注销接收器 在onDestroy()之前保持注册状态,这样即使不在前台也可以工作Android:决定显示启动器中的一个活动,android,android-activity,stack,task,Android,Android Activity,Stack,Task,我在开发一个复杂的Android用户界面时遇到了一个严重的问题。我有ActivityA(登录,然后在调用finish()self之后转到B Activity)和ActivityB(在ActivityA之后显示用户)。用户进入ActivityB后(登录成功后),有时网络会被切断,我需要让用户返回ActivityA。所以我在ActivityB中收到一条广播消息,当ActivityB收到广播消息时,它也应该完成自我并返回ActivityA。当ActivityB处于前台时,此功能可以正常工作。但当Act
编辑:尽管爱斯基摩人提出了一个很好的观点。也许活动A只是收集用户凭据。活动B可以进行实际连接。这意味着如果网络消失,活动B将在用户不受打扰的情况下重新建立它。更多的是“安卓”身份验证(登录)的用户体验可能有点棘手,因为根据您的操作方式以及应用程序与服务器的连接类型,存在多个用例和变体 根据您的描述,听起来应用程序需要有一个持久连接(比如ssh,而不是http),当这个连接被切断时,用户需要重新建立连接并重新验证。我建议使用片段而不是活动。我会有一个登录片段和具有Activity-B功能的片段。我会将该片段称为fragment-B。我建议使用以下基本流程:
如果连接不是持久性的,例如对服务器使用REST api,则这是另一个问题,因为需要缓存身份验证令牌,并且在应用访问服务器之前,应用可能不知道用户不再经过身份验证。(这听起来不像是你的情况。)为什么因为网络离线而要求他们再次登录?这对我来说毫无意义。您应该以某种方式指示网络状态,并且应该能够在再次直播时重新连接。广播是做什么的?据我所知,您不应该真正使用finish(),因为android将为您处理活动队列?是的,正如您的描述,身份验证很难实现,您必须是解决此问题的专家。谢谢你的教导。