|
|
|
@ -28,20 +28,35 @@ class EnhancedAdbService: |
|
|
|
async def start_monitoring(self): |
|
|
|
"""启动设备监控(需要手动调用)""" |
|
|
|
if not self._monitoring_started and (not self._device_monitor_task or self._device_monitor_task.done()): |
|
|
|
logger.info("开始设备监控") |
|
|
|
self._device_monitor_task = asyncio.create_task(self._monitor_devices()) |
|
|
|
self._monitoring_started = True |
|
|
|
logger.info("开始设备监控", host=self._host, port=self._port) |
|
|
|
try: |
|
|
|
self._device_monitor_task = asyncio.create_task(self._monitor_devices()) |
|
|
|
self._monitoring_started = True |
|
|
|
logger.info("设备监控任务创建成功", task_id=id(self._device_monitor_task)) |
|
|
|
except Exception as e: |
|
|
|
logger.error("创建设备监控任务失败", error=str(e)) |
|
|
|
self._monitoring_started = False |
|
|
|
raise |
|
|
|
else: |
|
|
|
logger.info("设备监控已在运行中", monitoring_started=self._monitoring_started, task_done=self._device_monitor_task.done() if self._device_monitor_task else None) |
|
|
|
|
|
|
|
async def stop_monitoring(self): |
|
|
|
"""停止设备监控""" |
|
|
|
if self._device_monitor_task and not self._device_monitor_task.done(): |
|
|
|
logger.info("正在停止设备监控", task_id=id(self._device_monitor_task)) |
|
|
|
self._device_monitor_task.cancel() |
|
|
|
try: |
|
|
|
await self._device_monitor_task |
|
|
|
logger.info("设备监控任务已成功停止") |
|
|
|
except asyncio.CancelledError: |
|
|
|
pass |
|
|
|
self._monitoring_started = False |
|
|
|
logger.info("设备监控已停止") |
|
|
|
logger.info("设备监控任务被取消") |
|
|
|
except Exception as e: |
|
|
|
logger.error("停止设备监控任务时发生错误", error=str(e)) |
|
|
|
finally: |
|
|
|
self._monitoring_started = False |
|
|
|
logger.info("设备监控已完全停止") |
|
|
|
else: |
|
|
|
logger.info("设备监控未在运行,无需停止") |
|
|
|
|
|
|
|
async def get_server_info(self) -> ServerInfo: |
|
|
|
"""获取ADB服务器信息""" |
|
|
|
@ -104,6 +119,7 @@ class EnhancedAdbService: |
|
|
|
|
|
|
|
async def _monitor_devices(self) -> None: |
|
|
|
"""设备监控内部方法""" |
|
|
|
logger.info("设备监控循环开始", host=self._host, port=self._port) |
|
|
|
try: |
|
|
|
logger.debug("开始设备监控循环") |
|
|
|
async for event in self._client.track_devices(): |
|
|
|
@ -115,9 +131,10 @@ class EnhancedAdbService: |
|
|
|
except asyncio.CancelledError: |
|
|
|
logger.info("设备监控被取消") |
|
|
|
except Exception as e: |
|
|
|
logger.error("设备监控异常", error=str(e)) |
|
|
|
logger.error("设备监控异常", error=str(e), host=self._host, port=self._port) |
|
|
|
# 监控异常时不再自动重启,需要手动重新启动 |
|
|
|
self._monitoring_started = False |
|
|
|
logger.warning("设备监控已停止,需要手动重新启动") |
|
|
|
|
|
|
|
async def _handle_device_event(self, event: DeviceEvent) -> None: |
|
|
|
"""处理设备事件""" |
|
|
|
|