0

だから、私には解決できない問題が1つあります。私のアプリは、CPU samsung SII の 45% 以上を使用しました。主な理由はpostDelayedだと思います。ここに私のコードの一部があります:

           Handler a=new Handler(); 
           a.post(new Runnable(){

        @Override
        public void run() {    
        Calendar cal = Calendar.getInstance(Locale.US); 
        cal.setTime(curr); 
        Format formatter = new SimpleDateFormat("\r EE \n d");
        int currentDOW = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DAY_OF_YEAR,(currentDOW*-1)+i+2);
        den.setText(formatter.format(cal.getTime()));  
        }
            a.postDelayed(this,400); 
        });

これは私のコードの一部であり、作業ですが、CPU 使用率が高い主な理由だと思います。私を助けてください!ありがとうございました!

4

2 に答える 2

0

コードを少し最適化することもできますが、必要のないときに更新を停止しないだけなので、ますます多くの更新が蓄積されていると思われます。

例として、方向を変更すると、以前のアクティビティ (破棄されたもの) のイベントがさらに追加され、更新速度が 2 倍になります。

于 2012-08-11T13:07:34.943 に答える
0

この問題がありました。run()ワーカー スレッドのメソッドに次のコードを追加するまで、アプリは約 60% の CPU 時間を使用していました。

@Override
public void run()
{
    while( _running )
    {
        // do usual stuff
        // ...

        // ** add the following to the end of your loop **

        try
        {
            Thread.sleep( 5 );
        }
        catch( InterruptedException e )
        {
            _running = false;
            /* at least we tried */
        }
    }
}

現在、目立った違いはなく、最大 8% の CPU を使用しています。

値「5」を試してください。ユーザーがより良いグラフィックス (つまり、5 未満の数値) とより良いバッテリー使用量 (5 より大きい数値) のバランスを取ることができるように、アプリ設定を追加しました。

于 2012-08-31T14:49:43.607 に答える