所以,我有一个问题,我无法解决。我的应用程序使用了超过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使用率的主要原因。请帮我!谢谢!
答案 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)。