You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin节拍器实现卡顿问题求助及正确实现方案问询

Xamarin节拍器卡顿问题优化求助

我是Xamarin新手,正在开发一款音乐类APP,其中包含节拍器功能:支持输入BPM,通过单个按钮控制启停,使用SimpleAudioPlayer插件播放节拍音效。目前已完成基础实现,但节拍器存在卡顿延迟问题,不符合需求。

原实现代码

// OFF by default
bool _MetronomeOn = false;
async private void btnMetronome_Clicked(object sender, EventArgs e)
{
    _MetronomeOn = !_MetronomeOn;

    // While Metronome is On
    while (_MetronomeOn)
    {
        // Get the bpm from ui
        double bpm;
        if (!Double.TryParse(entryMetronome.Text, out bpm))
            bpm = 90;

        double secInterval = 60 / bpm;
        var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
        player.Load("metronome.mp3");

        if (_MetronomeOn)
        {
            // NOTE : Added Xam.Plugin.SimpleAudioPlayer nugget package 
            player.Play();

            await Task.Delay(TimeSpan.FromSeconds(secInterval));
        }
    }
}

卡顿原因推测

我不确定卡顿具体原因,推测可能是循环实现方式或插件重复加载资源导致。

已完成的优化

已参考建议将音频播放器设为全局变量,在OnAppearing()方法中预加载音频文件,卡顿情况有所改善。下一步计划实现正确的定时器,寻求相关帮助。

优化后的代码片段:

public partial class MainPage : ContentPage
{
    // NOTE : Added Xam.Plugin.SimpleAudioPlayer nugget package to the Android Solution
    // The sound itself is loaded (not played) in OnAppearing()
    Plugin.SimpleAudioPlayer.ISimpleAudioPlayer player;

    public MainPage()
    {
        InitializeComponent();
    }

    // When the main view is launched and Shuffle Button animation
    protected override void OnAppearing()
    {
        base.OnAppearing();

        // Load the mp3. It must be in :
        // Android : Asset folder and build action is AndroidAsset
        // iOS :  Resource folder and build action is BundleResource
        player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
        player.Load("metronome.mp3");
        ...
    }
    
    ...
}

内容的提问来源于stack exchange,提问作者Beb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:07:38