Skip to content

Commit 3c8e9f9

Browse files
committed
Updated with lazy and initmanager option
1 parent b99b209 commit 3c8e9f9

File tree

5 files changed

+18
-9
lines changed

5 files changed

+18
-9
lines changed

flic2lib.Maui.Sample/MauiProgram.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public static MauiApp CreateMauiApp()
77
var builder = MauiApp.CreateBuilder();
88
builder
99
.UseMauiApp<App>()
10-
.UseFlic2lib()
10+
.UseFlic2lib(initManager: true)
1111
.ConfigureFonts(fonts =>
1212
{
1313
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
@@ -18,8 +18,6 @@ public static MauiApp CreateMauiApp()
1818
.AddTransient<MainPage>()
1919
.AddTransient<Bluetooth>();
2020

21-
FlicManager.Init();
22-
2321
return builder.Build();
2422
}
2523
}

flic2lib.Maui/Configure.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22

33
public static class Configure
44
{
5-
public static MauiAppBuilder UseFlic2lib(this MauiAppBuilder builder)
5+
public static MauiAppBuilder UseFlic2lib(this MauiAppBuilder builder, bool initManager = false)
66
{
77
builder.Services
88
.AddSingleton<IFlicManager>(FlicManager.Instance)
99
.AddSingleton<IFlicButtonHandler>(FlicButtonHandler.Instance);
1010

11+
if (initManager)
12+
{
13+
FlicManager.Init();
14+
}
15+
1116
return builder;
1217
}
1318
}

flic2lib.Maui/FlicButtonHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
public partial class FlicButtonHandler : IFlicButtonHandler
44
{
5+
private readonly static Lazy<FlicButtonHandler> _lazyInstance = new(() => new FlicButtonHandler(), LazyThreadSafetyMode.ExecutionAndPublication);
56
public event EventHandler<FlicButtonConnectedEvent>? Connected;
67
public event EventHandler<FlicButtonDisconnectedEvent>? Disconnected;
78
public event EventHandler<FlicButtonUnpairedEvent>? Unparied;
@@ -14,8 +15,7 @@ public partial class FlicButtonHandler : IFlicButtonHandler
1415
public event EventHandler<FlicButtonClickEvent>? ButtonClick;
1516
public event EventHandler<FlicButtonDoubleClickEvent>? ButtonDoubleClick;
1617
public event EventHandler<FlicButtonHoldEvent>? ButtonHold;
17-
18-
public static FlicButtonHandler Instance { get; } = new FlicButtonHandler();
18+
internal static FlicButtonHandler Instance => _lazyInstance.Value;
1919
private FlicButtonHandler() { }
2020

2121
private static FlicButton? GetFlicButton(string? uuid)

flic2lib.Maui/FlicManager.android.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ public partial void StopScan()
101101

102102
public class ScanCallbacks : Java.Lang.Object, IFlic2ScanCallback
103103
{
104-
public static ScanCallbacks Instance { get; } = new ScanCallbacks();
104+
private readonly static Lazy<ScanCallbacks> _lazyInstance = new(() => new ScanCallbacks(), LazyThreadSafetyMode.ExecutionAndPublication);
105+
internal static ScanCallbacks Instance => _lazyInstance.Value;
105106
private ScanCallbacks() { }
106107

107108
public void OnComplete(int result, int subCode, Flic2Button? button)

flic2lib.Maui/FlicManager.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@
33
public partial class FlicManager : IFlicManager
44
{
55
private readonly IList<FlicButton> _cachedButtons;
6-
6+
private readonly static Lazy<FlicManager> _lazyInstance = new(() => new FlicManager(), LazyThreadSafetyMode.ExecutionAndPublication);
77
public static bool IsInitialized { get; private set; }
8-
public static FlicManager Instance { get; } = new FlicManager();
8+
internal static FlicManager Instance => _lazyInstance.Value;
99
public IEnumerable<FlicButton>? Buttons => GetButtons();
1010

1111
private FlicManager()
1212
{
1313
_cachedButtons = new List<FlicButton>();
1414
}
1515

16+
public void ClearCache()
17+
{
18+
_cachedButtons.Clear();
19+
}
20+
1621
public static partial void Init();
1722
public partial void StartScan();
1823
public partial void StopScan();

0 commit comments

Comments
 (0)