Xamarin Android 应用程序消耗异常大量的电池。为什么?

Geo*_*iev 2 xamarin.android xamarin

我是 Xamarin 平台的初学者。我最近开始开发一些简单的应用程序,其唯一目的是学习该平台。我遇到了一个“问题”。我在 Android 平台上的跨平台应用程序(我没有在其他平台上测试过)消耗了异常多的电池。

例如,在使用大约 2 分钟时,应用程序消耗 5% 的电量,相比之下,显示屏消耗 6% 的电量。我通过进入电池消耗页面(Android 设置)发现了这一点。我怀疑这是因为我没有将事件处理程序设置为 null(即处理它们,请参阅下面的代码)。

这是我的 xaml 代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
     xmlns:local="clr-namespace:XamarinSample"
     x:Class="XamarinSample.MainPage">


    <StackLayout>
        
        <Slider VerticalOptions="CenterAndExpand"
                ValueChanged="OnSliderValueChanged"/>

        <Label x:Name="valueLabel"
               HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand"
               Text="A Simple Label"
               Font="Large"/>

        <Button HorizontalOptions="Center"
                VerticalOptions="CenterAndExpand"
                Text="Click me!"
                Clicked="OnButtonClick"/>

    </StackLayout>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

这是背后的代码:

namespace XamarinSample
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

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

        void OnSliderValueChanged(object sender, ValueChangedEventArgs args)
        {
            valueLabel.Text = args.NewValue.ToString("F3");
        }

        async void OnButtonClick(object sender, EventArgs args)
        {
            Button button = (Button)sender;
            await DisplayAlert("Clicked!",
                "The button labeled '" + button.Text + "' has been clicked","OK");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这种行为的原因可能是什么?

Sus*_*ver 5

首先,不要尝试在调试(或内置调试配置)时分析应用程序的电池使用情况,因为执行的代码(运行时和 Jit'd)会有所不同......

其次,您应该用于Google's Battery Historian应用程序的电池分析。这是 Google 提供/支持的 Android 工具集,恕我直言,非常值得花费最少的精力来设置它。

Batterystats 从您的设备收集电池数据,Battery Historian 将该数据转换为 HTML 可视化形式,您可以在浏览器中查看。Batterystats 是 Android 框架的一部分,而 Battery Historian 是开源的,可在 GitHub 上获取:https://github.com/google/battery-historian

向您展示进程在何处以及如何从电池获取电流。识别应用程序中可以推迟甚至删除的任务,以延长电池寿命。