From 0bb9cb509742b813bd2ce9205186b9ce9e3b55a2 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Tue, 2 Sep 2025 23:10:02 +0800 Subject: [PATCH] fix: enhance startup speed and fix connection issues during initialization --- UPDATELOG.md | 2 ++ src-tauri/src/lib.rs | 3 ++- src-tauri/src/module/lightweight.rs | 6 ----- src-tauri/src/utils/init.rs | 8 ------- src-tauri/src/utils/resolve/mod.rs | 35 +++++++++++++++++------------ 5 files changed, 25 insertions(+), 29 deletions(-) diff --git a/UPDATELOG.md b/UPDATELOG.md index dcd1188f..97456cb8 100644 --- a/UPDATELOG.md +++ b/UPDATELOG.md @@ -7,6 +7,7 @@ ### 🚀 性能优化 - 优化内存占用 +- 优化启动速度 ### 🐞 修复问题 @@ -17,6 +18,7 @@ - 修复托盘轻量模式状态检测异常 - 修复通过 scheme 导入订阅崩溃 - 修复单例检测实效 +- 修复启动阶段可能导致的无法连接内核 ### 👙 界面样式 diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index ea26f839..dd426eeb 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -331,8 +331,9 @@ pub fn run() { logging!(info, Type::Setup, true, "执行主要设置操作..."); + resolve::resolve_setup_handle(app_handle); resolve::resolve_setup_async(); - resolve::resolve_setup_sync(app_handle); + resolve::resolve_setup_sync(); logging!(info, Type::Setup, true, "初始化完成,继续执行"); Ok(()) diff --git a/src-tauri/src/module/lightweight.rs b/src-tauri/src/module/lightweight.rs index c8e08d6c..a8aa633c 100644 --- a/src-tauri/src/module/lightweight.rs +++ b/src-tauri/src/module/lightweight.rs @@ -90,12 +90,6 @@ pub async fn auto_lightweight_mode_init() -> Result<()> { ); set_lightweight_mode(true).await; enable_auto_light_weight_mode().await; - - // 确保托盘状态更新 - if let Err(e) = Tray::global().update_part().await { - log::warn!("Failed to update tray: {e}"); - return Err(e); - } } Ok(()) diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index b962aa8f..bc7d3b84 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -405,14 +405,6 @@ pub async fn init_resources() -> Result<()> { for file in file_list.iter() { let src_path = res_dir.join(file); let dest_path = app_dir.join(file); - logging!( - debug, - Type::Setup, - true, - "src_path: {:?}, dest_path: {:?}", - src_path, - dest_path - ); let handle_copy = |src: PathBuf, dest: PathBuf, file: String| async move { match fs::copy(&src, &dest).await { diff --git a/src-tauri/src/utils/resolve/mod.rs b/src-tauri/src/utils/resolve/mod.rs index 01213a99..c3cd0838 100644 --- a/src-tauri/src/utils/resolve/mod.rs +++ b/src-tauri/src/utils/resolve/mod.rs @@ -16,11 +16,16 @@ pub mod ui; pub mod window; pub mod window_script; -pub fn resolve_setup_sync(app_handle: AppHandle) { +pub fn resolve_setup_handle(app_handle: AppHandle) { init_handle(app_handle); - init_scheme(); - init_embed_server(); - NetworkManager::new().init(); +} + +pub fn resolve_setup_sync() { + AsyncHandler::spawn(|| async { + AsyncHandler::spawn_blocking(|| init_scheme()); + AsyncHandler::spawn_blocking(|| init_embed_server()); + AsyncHandler::spawn_blocking(|| NetworkManager::new().init()); + }); } pub fn resolve_setup_async() { @@ -33,28 +38,30 @@ pub fn resolve_setup_async() { std::thread::current().id() ); - // AsyncHandler::spawn_blocking(|| AsyncHandler::block_on(init_work_config())); - AsyncHandler::spawn(|| async { - init_work_config().await; - init_resources().await; - init_startup_script().await; + futures::join!( + init_work_config(), + init_resources(), + init_startup_script(), + init_hotkey(), + ); init_timer().await; - init_hotkey().await; init_auto_lightweight_mode().await; init_verge_config().await; init_core_manager().await; - init_system_proxy().await; + init_system_proxy().await; AsyncHandler::spawn_blocking(|| { init_system_proxy_guard(); }); - init_window().await; - init_tray().await; - refresh_tray_menu().await + let tray_and_refresh = async { + init_tray().await; + refresh_tray_menu().await; + }; + futures::join!(init_window(), tray_and_refresh,); }); let elapsed = start_time.elapsed();