ソースを参照

修复桌面卡片使用网络文件资源提前释放的崩溃

chendeben 1 年間 前
コミット
5093e72dbe

+ 5 - 10
entry/src/main/ets/common/widget/EnhancedFormUpdateService.ets

@@ -399,17 +399,12 @@ export class EnhancedFormUpdateService {
       // 更新卡片
       await formProvider.updateForm(formId, formData);
       
-      // 根据官方文档:在formProvider.updateForm执行完毕后,关闭文件描述符
+      // 注意:不手动关闭文件描述符,让系统自动管理
+      // 手动关闭可能导致EBADF错误,因为卡片系统可能还在使用文件描述符
       if (data.imageFileInfo && data.imageFileInfo.fd !== undefined && data.imageFileInfo.fd > 0) {
-        try {
-          // 修复:直接传递文件描述符数值
-          fileIo.closeSync(data.imageFileInfo.fd);
-          hilog.info(0x0000, TAG, `📷 [${formId}] Closed file descriptor: ${data.imageFileInfo.fd} for ${data.imageFileInfo.fileName}`);
-          // 清除文件描述符避免重复关闭
-          data.imageFileInfo.fd = -1;
-        } catch (closeError) {
-          hilog.warn(0x0000, TAG, `⚠️ [${formId}] Failed to close file descriptor: ${closeError}`);
-        }
+        hilog.info(0x0000, TAG, `📷 [${formId}] Form updated with file descriptor: ${data.imageFileInfo.fd} for ${data.imageFileInfo.fileName}`);
+        // 将fd标记为已使用,但不关闭,让系统自动回收
+        data.imageFileInfo.fd = -1;
       }