Alex-Dobrynin/Xamarin.Controls.ImageCropper

Sometimes stops working on Android

Closed this issue · 1 comments

I have seen that after a couple of times, the controls stops working on Android. Using the debugger, the last statement executed is the "await ImageCropper.Current.Crop(new CropSettings()", but there is no reply to IsFaulted, IsCanceled or IsCompleted. Here the code:

Device.BeginInvokeOnMainThread(async () =>
            {
                await ImageCropper.Current.Crop(new CropSettings()
                {
                    AspectRatioX = 1,
                    AspectRatioY = 1,
                    CropShape = CropSettings.CropShapeType.Rectangle
                }, PhotoPath).ContinueWith(t =>
                {
                    if (t.IsFaulted)
                    {
                        var ex = t.Exception;
                        //alert user
                    }
                    else if (t.IsCanceled)
                    {
                        var ex = t.Exception;
                        //do nothing
                    }
                    else if (t.IsCompleted)
                    {
                        var result = t.Result;
                        Device.BeginInvokeOnMainThread(() =>
                        {
                            logo_image.Source = result;
                            is_saved = false;
                            photo_path = result;
                            lbl_initials.IsVisible = false;
                            logo_image.IsVisible = true;
                        });
                    }
                });
            });

Any idea what could be wrong in my code?

Dietmar

Hi AlanFloyd,

If you are using MediaPicker, i think the workaround is to put some delay between picking a picture and the ImageCropper
like this

var file = await MediaPicker.PickPhotoAsync();
await Task.Delay(2000);
await ImageCropper.Current.Crop(new CropSettings() etc .....

I think the issue who is calling the OnActivityResult firstly with resultCode