【问题标题】:android connection exception/lost managerandroid连接异常/丢失管理器
【发布时间】:2013-05-22 11:49:41
【问题描述】:

背景

所以我继承了一个 android 应用程序,它在不同的地方连接到 web 服务以发送或接收信息。

就像现在一样,当连接失败时,Android 设备的用户会收到一条错误消息提示,对于大多数用户来说,该消息被视为晦涩难懂。

问题

所以我正在寻找的是关于如何在这个 android 应用程序中实现解决方案的模式或建议,该解决方案捕获所有 java 连接异常并显示一个对话框,告诉用户他失去了互联网连接,需要重试。

有什么想法吗? :-)

编辑,当前想法

我目前的想法是解决这个问题,或者让它更易于管理,而不是在每个可能的连接处处理问题的破碎异常处理是这样的。 每个通信实例/类都将继承自一个超类,或者实现一个强制使用该类的接口。此类包含连接异常的逻辑。让我们暂时称它为 ConnectionExceptionManager。 那么问题就变成了在每个 Web 服务调用中的每个通信类中的实现。在每个 web 服务调用异常中,我需要检查通信异常,如果它命中,请在此 catch 中使用 ConnectionExceptionManager。

然而,在每个通信类中复制到请求方法中仍然会很麻烦。

关于改进我目前的这个想法有什么想法吗?

【问题讨论】:

  • 处理每个与连接相关的异常,并在该处理程序代码中为适当的异常创建对话框,例如如果设备失去互联网连接,则向用户提供适当的错误消息,您还可以在继续之前检查设备是否有互联网连接..
  • 这可能是我必须要做的,但我不想那样做。我希望它受到管理,而不是破裂。

标签: java android code-injection


【解决方案1】:

我从您的问题中了解到,您需要在执行任何与互联网相关的操作之前检查互联网连接。为此,您可以简单地在全局类中创建公共静态布尔函数,即 public static boolean isInternetConnected(){...},以便您可以重用您的函数。

如果您希望您的应用程序自动检查互联网连接,那么您可以使用IntentService,它将在后台工作,并且在其受保护的抽象 void onHandleIntent(Intent Intent)中,您可以检查 isInternetConnected() 返回 true,如果没有,那么您可以打开警报对话框。

要在应用程序运行时重复间隔后使用此后台服务,您可以使用AlarmManager

希望这会有所帮助。

【讨论】:

  • 问题不是检查互联网连接,而是管理可能因丢失它而导致的异常。就像当用户开始下载大量数据时,它可能需要一些时间,如果在此下载或其他下载或文章期间连接失败,用户应该会收到一条好的错误消息。也许现在看起来我很懒惰,那是因为我是。我不想尝试找到下载时间更长的每个连接并实现相同的代码。我想管理失败的连接,感觉这将是处理我的问题的正确 OOP 方式。
猜你喜欢
  • 2013-07-06
  • 2014-10-18
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
相关资源
最近更新 更多