From 6bf03de4f3d55b3f859a0f810217effaff37272b Mon Sep 17 00:00:00 2001 From: yaobiao <1315508912@qq.com> Date: Tue, 12 Dec 2023 00:02:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=8F=E5=B0=91=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=A1=B5=E9=9D=A2=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/ViewVideoDetailViewModel.cs | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/DownKyi/ViewModels/ViewVideoDetailViewModel.cs b/src/DownKyi/ViewModels/ViewVideoDetailViewModel.cs index a514521..084e5f5 100644 --- a/src/DownKyi/ViewModels/ViewVideoDetailViewModel.cs +++ b/src/DownKyi/ViewModels/ViewVideoDetailViewModel.cs @@ -34,6 +34,9 @@ namespace DownKyi.ViewModels // 保存输入字符串,避免被用户修改 private string input = null; + // 保存当前页面服务,减少new的开销和接口调用次数 + private IInfoService infoService; + #region 页面属性申明 private VectorImage arrowBack; @@ -233,7 +236,7 @@ namespace DownKyi.ViewModels input = InputText; // 更新页面 - UnityUpdateView(UpdateView, input, null); + UnityUpdateView(UpdateView, input, null, true); // 是否自动解析视频 if (SettingsManager.GetInstance().IsAutoParseVideo() == AllowStatus.YES) @@ -410,7 +413,7 @@ namespace DownKyi.ViewModels { LogManager.Debug(Tag, $"Video Page: {videoPage.Cid}"); - UnityUpdateView(ParseVideo, input, videoPage); + UnityUpdateView(ParseVideo, input, videoPage, true); }); } catch (Exception e) @@ -635,25 +638,34 @@ namespace DownKyi.ViewModels /// /// /// - private void UnityUpdateView(Action action, string input, VideoPage page) + /// 强制new + private void UnityUpdateView(Action action, string input, VideoPage page,bool force = false) { - // 视频 - if (ParseEntrance.IsAvUrl(input) || ParseEntrance.IsBvUrl(input)) + if (infoService == null || force) { - action(new VideoInfoService(input), page); - } + // 视频 + if (ParseEntrance.IsAvUrl(input) || ParseEntrance.IsBvUrl(input)) + { + infoService = new VideoInfoService(input); + } - // 番剧(电影、电视剧) - if (ParseEntrance.IsBangumiSeasonUrl(input) || ParseEntrance.IsBangumiEpisodeUrl(input) || ParseEntrance.IsBangumiMediaUrl(input)) - { - action(new BangumiInfoService(input), page); - } + // 番剧(电影、电视剧) + if (ParseEntrance.IsBangumiSeasonUrl(input) || ParseEntrance.IsBangumiEpisodeUrl(input) || ParseEntrance.IsBangumiMediaUrl(input)) + { + infoService = new BangumiInfoService(input); + } - // 课程 - if (ParseEntrance.IsCheeseSeasonUrl(input) || ParseEntrance.IsCheeseEpisodeUrl(input)) + // 课程 + if (ParseEntrance.IsCheeseSeasonUrl(input) || ParseEntrance.IsCheeseEpisodeUrl(input)) + { + infoService = new CheeseInfoService(input); + } + } + if (infoService == null) { - action(new CheeseInfoService(input), page); + return; } + action(infoService, page); } ///