From 7232735073229d780822067e7ca49c1d017821e1 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Tue, 10 Mar 2026 19:05:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMainActivity=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E6=97=B6CameraX=20NPE=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 升级CameraX版本 1.3.0 → 1.4.1,从根本修复RequestWithCallback.abort() NPE 2. 跳转PayActivity前调用shutdownCamera(),防止in-flight拍照请求触发生命周期异常 3. onResume()顶部增加相机恢复逻辑,通过cameraProviderFuture==null判断是否需要重新初始化 4. shutdownCamera()中将cameraProviderFuture置null,作为相机已停止的可靠标志 Co-Authored-By: Claude Sonnet 4.6 --- .../main/java/com/sw/dualscreen/activity/MainActivity.kt | 7 ++++++- gradle/libs.versions.toml | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt index 522e9f6..bf3ccb9 100644 --- a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt +++ b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt @@ -457,6 +457,7 @@ class MainActivity : BaseActivity() { // 3. 关闭相关资源 imageCapture = null imageAnalysis = null + cameraProviderFuture = null // 4. 停止副屏更新 isAnalyzing = false @@ -555,6 +556,10 @@ class MainActivity : BaseActivity() { override fun onResume() { super.onResume() isPageVisible = true + // shutdownCamera 后 cameraProviderFuture 置为 null,需重新初始化相机 + if (cameraProviderFuture == null) { + setupCamera() + } // 启动定时器 handler.postDelayed(timeoutRunnable, TIME_OUT) // ToastUtils.showToast("isPageVisible=$isPageVisible") @@ -797,7 +802,7 @@ class MainActivity : BaseActivity() { userId = null, ) { isRefreshPage = false - //presentation?.dismiss() + shutdownCamera() startActivity(Intent(this, PayActivity::class.java).apply { putExtra(PayActivity.FOOD_INFO, checkedItem!!) putExtra(PayActivity.FOOD_EAT_NUM, eatNum) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ab75124..92c874c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ material = "1.10.0" activity = "1.8.0" constraintlayout = "2.1.4" accompanistPermissions = "0.37.3" -cameraCore = "1.3.0" +cameraCore = "1.4.1" retrofit = "3.0.0" okhttp = "4.12.0" timber = "5.0.1"