2017-08-25 9 views
0

私はXamarinプラットフォームの初心者です。私は最近、プラットフォームを学ぶ唯一の目的でいくつかの簡単なアプリケーションの開発に着手しました。私は "問題"に遭遇しました。 Androidプラットフォーム上の私のクロスプラットフォームアプリケーション(他のプラットフォームではテストしていません)は、珍しい量のバッテリを消費します。たとえば、約2分の使用で、アプリはバッテリーの5%を消費します。これと比較すると、ディスプレイは6%を消費します。私は、バッテリー消費量ページ(Androidの設定)に入ることでそれを見つけました。これは、イベントハンドラをnullに設定していないためです(つまり、これらのイベントハンドラを破棄する(下記のコードを参照)。Xamarin Androidアプリは、異常な量のバッテリーを消費します。どうして?

これは私の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

誰かが私に理由何ができるかの方向を隠してもらえこの行動のために?前もって感謝します!

答えて

2

最初のコード実行(ランタイムおよびJit'd)とデバッグ(または内蔵デバッグ構成1)しながら、アプリのバッテリー使用状況を分析しようとしない異なるだろう...

セカンドアプリのバッテリー分析にGoogle's Battery Historianを使用する必要があります。これは、Googleが提供する/サポートされているAndroidツールセットとIMHOです。

バッテリスタートはデバイスからバッテリデータを収集し、バッテリヒストリアンはそのデータをブラウザで表示できるHTMLビジュアライゼーションに変換します。 BatterystatsはAndroidフレームワークの一部であり、Battery Historianはオープンソースで、GitHubのhttps://github.com/google/battery-historianにあります。

プロセスがバッテリからどこにどのように電流を引き出しているかを表示します。 バッテリーの寿命を延ばすために、延期または削除することができるタスクをアプリケーション内で識別します。

+0

ご提案いただきありがとうございます!私はそのツールについて聞いていない。私はそれを試してみる:) –