Android高CPU使用率

时间:2012-08-11 12:20:22

标签: android cpu-usage postdelayed

所以,我有一个问题,我无法解决。我的应用程序使用了超过45%的cpu samsung SII。我认为主要原因是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使用率的主要原因。请帮我!谢谢!

2 个答案:

答案 0 :(得分:0)

你可以稍微优化代码,但我怀疑你根本不需要停止更新,因此正在积累越来越多的更新。

例如,如果您更改方向,它将添加更多上一个活动(已销毁)的事件,最终会使更新速率加倍。

答案 1 :(得分:0)

我有这个问题。我的应用程序使用了大约60%的CPU时间,直到我将以下代码添加到我的工作线程中的run()方法中:

@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)。

相关问题