Xamarin Android应用消耗了不寻常的电量。为什么呢?

时间:2017-08-25 22:09:00

标签: xamarin xamarin.android

我是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>

这就是代码隐藏:

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

enter image description here

有人可以向我隐瞒这个行为的原因吗?先感谢您!

1 个答案:

答案 0 :(得分:2)

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

其次,您应该使用 Google's Battery Historian 进行应用的电池分析。这是谷歌提供/支持的Android工具集,恕我直言,非常值得设置它的最小努力。

  

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

     

显示进程从电池中吸取电流的位置和方式。   识别应用中可以推迟甚至删除的任务,以延长电池寿命。