【问题标题】:Xamarin Forms application freeze randomly?Xamarin Forms 应用程序随机冻结?
【发布时间】:2019-11-16 02:44:24
【问题描述】:

我有 Xamarin Forms 应用程序,它使用自定义渲染器到相机 API 2 并且在 Android 版本的应用程序上,如果我可以遵循任何见解来避免此类操作,他会冻结并且在重新启动应用程序之前无法工作

【问题讨论】:

  • 您是否为您的项目添加了权限?如果您能提供完整的代码,将会很有帮助。
  • 是的,所有需要的权限都已授予,问题发生在应用程序工作一段时间后,而不是在应用程序启动时。
  • 能否提供代码?
  • 这是一个完整的项目,代码是私有的,不允许共享它。我需要任何关于发生相同问题的见解,因为它是随机发生的,并且没有特定的场景来重现它
  • 非常感谢您的回答,但这与我目前所处的情况无关。我认为该应用程序处于死锁状态或类似的情况,它不会崩溃它的冻结,这意味着该应用程序已打开,但 UI 已冻结,无法执行任何操作

标签: xamarin.forms xamarin.android freeze android-camera2


【解决方案1】:

如果您想在 Xamarin.Forms 中实现拍照并从相册中选择图像。您可以使用来自 nuget 的插件 Xam.Plugin.Media 。并且您不再需要使用自定义渲染器并在特定平台上实现它。

用法

在表单中

takePhotoButton.Clicked += async (sender, args) =>
{
    await CrossMedia.Current.Initialize();
    
    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
        DisplayAlert("No Camera", ":( No camera available.", "OK");
        return;
    }

    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
        Directory = "Sample",
        Name = "test.jpg"
    });

    if (file == null)
        return;

    await DisplayAlert("File Location", file.Path, "OK");

    image.Source = ImageSource.FromStream(() =>
    {
        var stream = file.GetStream();
        return stream;
    }); 
};

有关插件的详细信息和功能的表格,您可以查看Docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多