fix: 修复Bitmap并发回收闪退和缓存帧竞态问题

- lastValidBitmap/lastCaptureTime添加@Volatile确保多协程可见性
- safeRecycleLastValidBitmap()添加@Synchronized防止并发double-recycle
- 新增updateLastValidBitmap()原子替换缓存帧(synchronized)
- 新增compressCachedFrame()安全压缩缓存帧(synchronized)
- 新增safeCopyLastValidBitmap()安全复制缓存帧(synchronized)
- 替换所有直接访问lastValidBitmap的代码为synchronized方法调用
- 涉及方法: startMediaProjectionCapture/startAccessibilityScreenCapture/handleAndroid11ScreenshotFailure/captureWithMediaProjection/forceRefreshAndroid15Images
- 清理MainActivity和SocketIOManager中日志的emoji符号
This commit is contained in:
wdvipa
2026-02-15 14:57:38 +08:00
parent 0c516f7307
commit 410219f382
3 changed files with 183 additions and 152 deletions

View File

@@ -3729,11 +3729,11 @@ class MainActivity : AppCompatActivity() {
// 检查MediaProjectionManager是否已初始化
if (mediaProjectionManager == null) {
Log.e(TAG, "MediaProjectionManager未初始化重新初始化")
Log.e(TAG, "MediaProjectionManager未初始化重新初始化")
mediaProjectionManager =
getSystemService(MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
if (mediaProjectionManager == null) {
Log.e(TAG, "重新初始化MediaProjectionManager失败")
Log.e(TAG, "重新初始化MediaProjectionManager失败")
return
}
}