首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的应用在网络关闭的情况下仍然崩溃

为什么我的应用在网络关闭的情况下仍然崩溃
EN

Stack Overflow用户
提问于 2021-03-25 07:48:57
回答 1查看 334关注 0票数 1

我的应用程序仍然崩溃,当互联网关闭时,我正在使用一个模块的服务,如翻新和OkHttp配置,我已经添加这些权限的清单上的应用程序清单和服务模块清单,但没有效果。

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

但crashilytics记录了这些错误:

代码语言:javascript
运行
复制
Fatal Exception: java.net.UnknownHostException: Unable to resolve host "api.com.br": No address associated with hostname

代码语言:javascript
运行
复制
Caused by android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
EN

Stack Overflow用户

发布于 2021-03-25 08:09:46

你提到的权限是让你的应用程序访问互联网、访问网络状态和访问wifi状态所必需的。但是,用户仍然可以在他们认为合适的时候打开和关闭互联网连接。

如果没有互联网连接,您的api.com.br域名系统查询将失败。

你可以在尝试进行任何网络呼叫之前检查互联网连接,并向用户显示错误,这样他们就会知道要打开它才能让你的应用正常工作。

你可以参考谷歌的Android文档here,了解如何检查互联网连接。

本质上:

代码语言:javascript
运行
复制
private boolean isNetworkConnected(Context context) {
    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}

此外,您应该计划在进行网络调用时捕获和处理任何与网络相关的异常,并使用该异常向用户显示有用的错误。

这是因为即使进行了连接预检查,在进行呼叫后仍有可能出现网络故障。但是,预检查将阻止您进行您知道会失败的呼叫。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66791059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档