Skip to content
This repository was archived by the owner on Nov 17, 2023. It is now read-only.

Commit 6e7a0ac

Browse files
David BritchDavid Britch
authored andcommitted
LocationService threading issues fixed on Android.
1 parent 01cf30e commit 6e7a0ac

File tree

4 files changed

+6
-8
lines changed

4 files changed

+6
-8
lines changed

src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ private async Task GetGpsLocation()
7979
try
8080
{
8181
var position = await locator.GetPositionAsync();
82-
8382
_settingsService.Latitude = position.Latitude.ToString();
8483
_settingsService.Longitude = position.Longitude.ToString();
8584
}

src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Activities/MainActivity.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
using System;
1111
using Xamarin.Forms.Platform.Android;
1212
using eShopOnContainers.Droid.Services;
13-
using eShopOnContainers.Core.Services.Permissions;
1413

1514
namespace eShopOnContainers.Droid.Activities
1615
{
@@ -21,8 +20,6 @@ namespace eShopOnContainers.Droid.Activities
2120
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
2221
public class MainActivity : FormsAppCompatActivity
2322
{
24-
public static IPermissionsService PermissionsService = new PermissionsService();
25-
2623
protected override void OnCreate(Bundle bundle)
2724
{
2825
FormsAppCompatActivity.ToolbarResource = Resource.Layout.Toolbar;
@@ -60,7 +57,7 @@ public override void OnTrimMemory([GeneratedEnum] TrimMemory level)
6057
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
6158
{
6259
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
63-
((PermissionsService)PermissionsService).OnRequestPermissionResult(requestCode, permissions, grantResults);
60+
((PermissionsService)PermissionsService.Current.Value).OnRequestPermissionResult(requestCode, permissions, grantResults);
6461
}
6562
}
6663
}

src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/LocationServiceImplementation.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using eShopOnContainers.Core.Models.Location;
66
using eShopOnContainers.Core.Models.Permissions;
77
using eShopOnContainers.Core.Services.Location;
8-
using eShopOnContainers.Droid.Activities;
98
using eShopOnContainers.Droid.Services;
109
using System;
1110
using System.Collections.Generic;
@@ -45,12 +44,12 @@ public LocationServiceImplementation()
4544

4645
async Task<bool> CheckPermissionsAsync()
4746
{
48-
var status = await MainActivity.PermissionsService.CheckPermissionStatusAsync(Permission.Location);
47+
var status = await PermissionsService.Current.Value.CheckPermissionStatusAsync(Permission.Location);
4948
if (status != PermissionStatus.Granted)
5049
{
5150
Console.WriteLine("Currently do not have Location permissions, requesting permissions.");
5251

53-
var request = await MainActivity.PermissionsService.RequestPermissionsAsync(Permission.Location);
52+
var request = await PermissionsService.Current.Value.RequestPermissionsAsync(Permission.Location);
5453
if (request[Permission.Location] != PermissionStatus.Granted)
5554
{
5655
Console.WriteLine("Location permission denied.");

src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/PermissionsService.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Collections.Generic;
99
using System.Diagnostics;
1010
using System.Linq;
11+
using System.Threading;
1112
using System.Threading.Tasks;
1213

1314
namespace eShopOnContainers.Droid.Services
@@ -20,6 +21,8 @@ public class PermissionsService : IPermissionsService
2021
Dictionary<Permission, PermissionStatus> _results;
2122
IList<string> _requestedPermissions;
2223

24+
public static Lazy<IPermissionsService> Current = new Lazy<IPermissionsService>(() => new PermissionsService(), LazyThreadSafetyMode.PublicationOnly);
25+
2326
#region Internal Implementation
2427

2528
List<string> GetManifestNames(Permission permission)

0 commit comments

Comments
 (0)