【问题标题】:Android app crash when first network is switched off and then switched on当第一个网络关闭然后再打开时,Android 应用程序崩溃
【发布时间】:2011-02-17 12:57:58
【问题描述】:

我正在使用以下函数来检查网络连接,但在交换 wifi 状态时应用程序崩溃

    public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connec = (ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = connec.getActiveNetworkInfo();

    if (netInfo != null && netInfo.isConnected() == true) {
        return true;
    }
    return false;
}

【问题讨论】:

  • 你能提供你得到的错误吗?
  • 发布堆栈跟踪。如果您没有连接到网络,NetworkInfo 会抛出异常(您没有捕获)对我来说似乎是合理的。
  • 如果您的应用在执行网络操作时更改了 WiFi 状态,您的应用会崩溃吗?或者如果 WiFi 状态发生变化并且您然后运行您的应用程序,它会崩溃吗?
  • 遗憾的是它从来没有进入调试模式
  • 首先在失去连接后,按下返回按钮以到达“发生崩溃的页面”..然后显示警报(没有网络连接,我按确定)..然后我切换在wifi上...然后有一个刷新按钮,其中使用上述fn ..检查连接性..然后在空白屏幕应用程序崩溃后

标签: android connectivity


【解决方案1】:

在网络之间切换需要一些时间......

所以现在如果我们禁用 wifi,它会在几秒钟后自动连接到移动网络。如果我们启用 wifi,它会再次连接到 wifi 网络...

您的应用程序中的线程正在检查该班次之前的连接性...

在这里查看对话

Android: How to Enable/Disable Wifi or Internet Connection Programmatically

【讨论】:

    【解决方案2】:

    您是否缺少 NullPointerException?

    我使用以下方法:

    public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        try {
            return cm.getActiveNetworkInfo().isConnectedOrConnecting();
        } catch(NullPointerException n) {
            return false;
        }
    }
    

    【讨论】:

    • NullPointerException 属于未经检查的异常类别。它永远不应该被检查。 NullPointerException 表示程序员忘记将对象绑定到其引用的错误。如果它来了,程序应该终止。
    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多