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);
}
///