API在IntelliJ可正常调用但Android Studio中执行中断无报错如何解决
问题原因排查及解决方案
核心触发原因
- 主线程网络请求限制
Android 3.0及以上系统强制禁止在主线程执行网络请求操作,若你当前将requestData方法直接在Activity主线程调用,执行到con.getInputStream()时会抛出NetworkOnMainThreadException。你现有代码仅捕获了IOException,该异常属于运行时异常,不会被现有catch逻辑捕获,因此出现代码中断执行、无异常抛出的表象。 - 网络权限缺失
安卓应用访问网络必须提前声明网络权限,若未在AndroidManifest.xml中配置INTERNET权限,网络请求会直接被系统拦截,现有异常逻辑无法捕获对应错误。 - 明文流量限制
如果你调用的天气接口是HTTP协议而非HTTPS协议,Android 9.0及以上系统默认禁止明文HTTP请求,也会导致请求直接中断。
对应修复方案
- 调整线程逻辑,将网络请求放到子线程执行,Java环境下可直接通过Thread+Handler实现异步请求示例如下:
// 子线程执行网络请求 new Thread(new Runnable() { @Override public void run() { try { String result = requestData("目标城市"); // 如需更新UI,通过Handler切换到主线程操作 runOnUiThread(new Runnable() { @Override public void run() { // 此处执行UI更新逻辑 } }); } catch (Exception e) { e.printStackTrace(); } } }).start();
- 在
AndroidManifest.xml的manifest标签下添加网络权限声明:
<uses-permission android:name="android.permission.INTERNET" />
- 若使用HTTP接口,可在
AndroidManifest.xml的application标签中添加配置临时放行明文请求(正式上线建议换成HTTPS接口):
<application ... android:usesCleartextTraffic="true"> ... </application>
- 优化异常捕获逻辑,可添加通用Exception捕获分支,便于后续排查其他未知错误。
内容的提问来源于stack exchange,提问作者matepolocz
相关产品推荐
相关产品推荐

