Android:未调用 NetworkOnMainThreadException

标签 android

熟悉Android开发,习惯了在UIThread上进行网络调用时的NetworkOnMainThreadException异常。

但是在下面的情况下会抛出 IOException 而不会抛出 NetworkOnMainThreadException

代码:

        try {
            a = mGeo.getFromLocationName("SFO", 1);
        } catch (IOException e) {
            e.printStackTrace();
        }

我觉得这很奇怪。不应该抛出网络异常(这是一个运行时异常)吗?

最佳答案

如果您在 link 上检查实现情况然后 IOException 是已检查的异常并从代码中抛出。 作为引用,我正在从上面的链接添加实现更多可以在实现中的评论中找到

public List<Address> getFromLocationName(String locationName, int maxResults) throws IOException {
if (locationName == null) {
    throw new IllegalArgumentException("locationName == null");
}
try {
    List<Address> results = new ArrayList<Address>();
    String ex = mService.getFromLocationName(locationName,
        0, 0, 0, 0, maxResults, mParams, results);
    if (ex != null) {
        throw new IOException(ex);
    } else {
        return results;
    }
} catch (RemoteException e) {
    Log.e(TAG, "getFromLocationName: got RemoteException", e);
    return null;
}
}

NetworkOnMainThreadException 是一个未经检查的异常,因为它扩展了 RuntimeException,这 link来自java文档可能有帮助。 希望这能回答您的问题。

关于Android:未调用 NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391313/

相关文章:

Android 开发 - 安装出错?

android - 从服务向 Activity 抛出自定义异常

android Activity 已泄露窗口 com.android.internal.policy.impl.phonewindow$decorview 问题

android - 如何处理 "Don' t ask again”in while requesting Role in Android Q?

android - 当前日期应该在 android 中增加 12 小时

android - 为什么 Android 蓝牙会在几分钟后停止接收字节?

android - 单击提交按钮后在另一个页面中显示表单数据

安卓 : AutoCompleteTextView listview scroll listener (for endless scrolling)

java - 使用 Chaquopy 在 Android 中自写 python 代码

android - 更新gradle版本并编译到实现时,“无法解决recyclerview-v7”错误