2

我正在开发我的第一个 Android 应用程序,我很难通过广播关闭进度对话框。

情况很简单:我有一个登录活动,它使用服务与服务器通信并允许或拒绝用户。进度对话框应在应用程序等待服务器响应时显示,并在响应到达时关闭。在我的应用程序暂停之前,一切都很好,因为活动没有收到广播(因为过滤器在 onPause 事件中未注册)。

所以:

  1. Activity 显示对话框并启动服务。

  2. 该服务将身份验证信息发送到服务器并等待响应。

  3. 用户在等待响应时按 Home,活动将暂停。

  4. 服务接收来自服务器的响应并广播意图。

  5. 由于活动暂停没有收到广播,因此不会关闭进度对话框(如果应用程序接收到广播,通常会被关闭而没有问题。并且由于我的进度对话框不可取消,它会卡在活动中) .

我知道当接收者未注册时,活动不会执行该onReceive方法(这对我来说很重要)。即使应用程序在后台,我也需要执行关闭对话框并继续登录过程的方法,因此当用户回来时,它将在主页上(如果登录正确)。或者至少,当活动恢复时执行onReceive以处理响应。

我虽然在一个解决方案中,但我不确定是否是最好的方法。我想到除了从服务发送广播之外,将意图保存在应用程序上下文中,当活动恢复时检查上下文中是否有意图并将其用作服务响应(并在过程中关闭对话框) .

显然,对话框并不是我唯一担心的事情,我需要执行所有关闭对话框的部分,因为它决定是让用户进入还是拒绝登录。

如果有人可以为这种情况提供一些最佳实践,我将不胜感激。

4

0 回答 0