Android应用在三星Android11真机启动时卡在闪屏页问题排查
解决Android 11真机闪屏页卡死问题:服务器500错误导致JSON解析异常
问题核心分析
- 闪屏页卡死的直接诱因:应用启动时调用
https://xxxxxxx/api/user/checkversion接口,服务器返回500 Internal Server Error,且响应内容为HTML错误页面,而非预期的JSON格式。 - 进程终止原因:应用未做状态码校验,直接将HTML响应尝试解析为
JSONObject,触发org.json.JSONException且未捕获该异常,最终导致进程崩溃。
解决方案
1. 增加异常捕获与状态码校验,避免进程崩溃
在OkHttp请求的回调逻辑中,先判断响应状态是否成功,再执行JSON解析,同时捕获解析异常,兜底处理确保流程能正常推进:
client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 请求失败时直接跳转到主页面或提示用户 runOnUiThread(() -> navigateToMainPage()); } @Override public void onResponse(Call call, Response response) throws IOException { // 先校验响应状态码,非2xx直接处理错误 if (!response.isSuccessful()) { runOnUiThread(() -> { // 可提示用户网络异常,或直接跳过版本检查进入主页面 navigateToMainPage(); }); response.close(); return; } // 仅在响应成功时解析JSON try { String responseBody = response.body().string(); JSONObject jsonObject = new JSONObject(responseBody); // 正常处理版本检查逻辑 } catch (JSONException e) { e.printStackTrace(); // 解析失败时兜底,进入主页面 runOnUiThread(() -> navigateToMainPage()); } finally { response.close(); } } });
2. 排查服务器500错误根源
- 联系后端开发人员,查看
/api/user/checkversion接口的服务器日志,定位错误触发点(如请求参数不合法、数据库连接异常、接口逻辑bug等)。 - 使用Postman等工具模拟应用的POST请求,核对请求参数、Headers是否与应用端一致,排查是否是请求格式问题导致服务器报错。
3. 适配Android 11网络限制(辅助排查)
虽然当前问题核心在服务器,但可确认以下Android 11相关配置是否合规:
- 检查
AndroidManifest.xml中是否声明了<uses-permission android:name="android.permission.INTERNET" />权限。 - 若接口使用HTTPS,确保服务器证书配置合法,避免Android 11的证书校验拦截请求。
内容的提问来源于stack exchange,提问作者Niklas
相关产品推荐
相关产品推荐

