0

Я использую GoogleApiClient в своем приложении для Android и испытываю сбой при возобновлении моего приложения.Сбой приложений при возобновлении использования GoogleApiClient

код выглядит следующим образом:

MainActivity подпись:

public class MainActivity : AppCompatActivity, GoogleApiClient.IOnConnectionFailedListener, Android.Gms.Location.ILocationListener 

OnCreate

protected override async void OnCreate(Bundle bundle) 
{ 
    App.Initialize(); 
    base.OnCreate(bundle); 

    SetContentView(Resource.Layout.Main); 

    await InitializeGoogleApis(); 
} 

Google API инициализации

private async Task InitializeGoogleApis() 
{ 
    // Construct api client and request for required api's 
    googleApiClientBuilder = new GoogleApiClient.Builder(this) 
     .AddApi(LocationServices.API) 
     .EnableAutoManage(this, this); 

    // Connect to google play services 
    googleApiClient = await googleApiClientBuilder 
     .BuildAndConnectAsync(); 

    // Request location api and set common properties 
    googleLocationRequest = new LocationRequest() 
     .SetPriority(LocationRequest.PriorityHighAccuracy) 
     .SetInterval(1000) 
     .SetFastestInterval(1000); 

    // Set location changed listener 
    await LocationServices.FusedLocationApi.RequestLocationUpdatesAsync(googleApiClient, googleLocationRequest, this); 
} 

OnResume и OnDestroy:

protected override void OnResume() 
{ 
    base.OnResume(); 
} 

protected override async void OnDestroy() 
{ 
    base.OnDestroy(); 

    if (googleApiClient != null) 
     await LocationServices.FusedLocationApi.RemoveLocationUpdatesAsync(googleApiClient, this); 
} 

Я все исключения включил но is no exception description

приложение всегда сбой при попытке возобновить. Когда он падает, он помещается в фоновом режиме, и когда я пытаюсь возобновить его снова, он работает отлично.

ответ

0

Ok я нашел Hacky способ обойти это, я оставил все мои реализации то же самое, только что добавили эти функции к моей основной деятельности

protected override void OnStop() 
{ 
    base.OnStop(); 

    if (googleApiClient != null) 
    { 
     LocationServices.FusedLocationApi.Dispose(); 
     googleApiClient.StopAutoManage(this); 
     googleApiClient.Disconnect(); 
     googleApiClient.Dispose(); 
     googleApiClient = null; 
    } 
} 

protected override async void OnRestart() 
{ 
    base.OnRestart(); 
    await InitializeGoogleApis(); 
} 

Я forcebly остановить GoogleApiClient и реинициализировать снова внутри моей функции OnRestart. Настолько базовый, что решает мою проблему.

Смежные вопросы