2015-02-22 5 views
0

В моей программе Android у меня есть 3 функции, которые будут повторяться до тех пор, пока пользователь не выйдет из приложения. В настоящее время он может обновлять значение (позицию) каждую секунду.Улучшение скорости приложения android

мне было интересно, если иметь много, если другое условие в одной функции будет замедлять производительность моего приложения т.е. это может занять путь дольше, чем на секунду для обновления пнуть в.

Обратите внимание, что 2 функции if else будет выполнять только после. Вся функция if-else имеет в ней очень мало кода. Ниже приведен код

public void positionUpdated(Coordinate userPosition, int accuracy) { 

    // GETS EXECUTED ONCE // 
    if(nameList.size() == 0) {nameList = indoorsFragment.getZones();} 
    if(end == null) { 
     for(int i=0 ; i < nameList.size() ; i++) if(nameList.get(i).equals(name)) end = nameList.get(i).getZonePoints().get(0); 
    } 
    // GETS EXECUTED ONCE // 

    if(Math.abs(userPosition.x - end.x) >500) {Toast.makeText(this,"WALK " + Math.abs(end.x - userPosition.x)/1000 + " Meters" , Toast.LENGTH_SHORT).show();return;} 

    if(turn) { 
     if ((userPosition.y - end.y) < 0) {Toast.makeText(this, "STOP AND TURN RIGHT", Toast.LENGTH_LONG).show();turn=false;return;} 
     if ((userPosition.y - end.y) > 0) {Toast.makeText(this, "STOP AND TURN LEFT" , Toast.LENGTH_LONG).show();turn=false;return;} 
    } 

    if((Math.abs(userPosition.y - end.y) < 500)) Toast.makeText(this, "WALK", Toast.LENGTH_LONG).show(); 
} 

Надежда получить обратную связь относительно этого, благодаря Haziq

+0

Это не проблема. Вы не должны думать об этом. Особенно о if-утверждениях. Больше внимания уделяйте интенсивной работе, такой как итерации. For-loops и т. Д. Думаю, вам не стоит беспокоиться, если вы фактически не заметите, что ваше приложение отстает. – David

+0

1hz - действительно медленный интервал и, как сказал @David, не проблема. Как сказал Дональд Кнут: «Мы должны забыть о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация - это корень всего зла, но мы не должны упускать наши возможности в этом критическом 3%» https: // en. wikipedia.org/wiki/Program_optimization#When_to_optimize – for3st

ответ

1

Количество заявлений, не важно, на самом деле они выполняются в долях наносекунд. важно то, что у вас много вложенных циклов или рекурсий.

Если вы не хотите, чтобы в потоке переднего плана выполнялась большая работа, используйте AsyncTask или Runnable, а затем обновите интерфейс в основном потоке.

Смежные вопросы