0

私はAndroidアプリケーションでGoogleApiClientを使用しており、アプリの再開時にクラッシュしています。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]を、私は同じ私の実装のすべてを残し、ちょうど私がforcebly GoogleApiClientを停止し、私のOnRestart関数内再びそれを再初期化し、私の主な活動

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

に、これらの機能を追加しました。だから私の問題を解決する基本的な。

関連する問題