Почему моя производительность увеличивается при прикосновении к экрану? - PullRequest
10 голосов
/ 21 декабря 2010

По какой-то причине мой FPS значительно увеличивается, когда я перемещаю мышь по экрану (на эмуляторе), удерживая левую кнопку мыши.Обычно моя игра очень запаздывает, но если я касаюсь экрана (и до тех пор, пока я двигаю мышью во время прикосновения), она идет идеально гладко.похоже, ничего не меняет.

Вот код, который я использую в своем onTouchEvent:

 // events when touching the screen
    public boolean onTouchEvent(MotionEvent event) 
    {
        int eventaction = event.getAction(); 

        touchX=event.getX();
        touchY=event.getY();

        switch (eventaction) 
        { 
         case MotionEvent.ACTION_DOWN: 
         {
          touch=true;
         }
         break; 

         case MotionEvent.ACTION_MOVE:
         {

         }
         break; 

         case MotionEvent.ACTION_UP: 

         {
          touch=false;
         }
              break; 
        }

     /*try 
     {
      AscentThread.sleep(20);
     } 
     catch (InterruptedException e) 
     {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }*/

        return true; 
    }

В журнале logcat FPS - это текущий fps (среднее значение за последние 20кадры), touch - это касание экрана или нет (из onTouchEvent).

Что происходит на земле?Кто-нибудь еще имел такое странное поведение раньше?

Logcat log:

12-21 19:43:26.154: INFO/myActivity(786): FPS: 31.686569159606414 Touch: false
12-21 19:43:27.624: INFO/myActivity(786): FPS: 19.46310293212206 Touch: false
12-21 19:43:29.104: INFO/myActivity(786): FPS: 18.801202175690467 Touch: false
12-21 19:43:30.514: INFO/myActivity(786): FPS: 21.118295877408478 Touch: false
12-21 19:43:31.985: INFO/myActivity(786): FPS: 19.117397812958878 Touch: false
12-21 19:43:33.534: INFO/myActivity(786): FPS: 15.572571858239263 Touch: false
12-21 19:43:34.934: INFO/myActivity(786): FPS: 20.584119901503506 Touch: false
12-21 19:43:36.404: INFO/myActivity(786): FPS: 18.888025905454207 Touch: false
12-21 19:43:37.814: INFO/myActivity(786): FPS: 22.35722329083629 Touch: false
12-21 19:43:39.353: INFO/myActivity(786): FPS: 15.73604859775362 Touch: false
12-21 19:43:40.763: INFO/myActivity(786): FPS: 20.912449882754633 Touch: false
12-21 19:43:42.233: INFO/myActivity(786): FPS: 18.785278388997718 Touch: false
12-21 19:43:43.634: INFO/myActivity(786): FPS: 20.1357397209596 Touch: false
12-21 19:43:45.043: INFO/myActivity(786): FPS: 21.961138432007957 Touch: false
12-21 19:43:46.453: INFO/myActivity(786): FPS: 22.167196852834273 Touch: false
12-21 19:43:47.854: INFO/myActivity(786): FPS: 22.207318228024274 Touch: false
12-21 19:43:49.264: INFO/myActivity(786): FPS: 22.36980559230175 Touch: false
12-21 19:43:50.604: INFO/myActivity(786): FPS: 23.587638823252547 Touch: false
12-21 19:43:52.073: INFO/myActivity(786): FPS: 19.233902040593076 Touch: false
12-21 19:43:53.624: INFO/myActivity(786): FPS: 15.542190150440987 Touch: false
12-21 19:43:55.034: INFO/myActivity(786): FPS: 20.82290063974675 Touch: false
12-21 19:43:56.436: INFO/myActivity(786): FPS: 21.975282007207717 Touch: false
12-21 19:43:57.914: INFO/myActivity(786): FPS: 18.786927284103687 Touch: false
12-21 19:43:59.393: INFO/myActivity(786): FPS: 18.96879004217992 Touch: false
12-21 19:44:00.625: INFO/myActivity(786): FPS: 28.367566618064878 Touch: false
12-21 19:44:02.113: INFO/myActivity(786): FPS: 19.04441528684418 Touch: false
12-21 19:44:03.585: INFO/myActivity(786): FPS: 18.807837511809065 Touch: false
12-21 19:44:04.993: INFO/myActivity(786): FPS: 21.134330284993418 Touch: false
12-21 19:44:06.275: INFO/myActivity(786): FPS: 27.209688764079907 Touch: false
12-21 19:44:07.753: INFO/myActivity(786): FPS: 19.055894653261653 Touch: false
12-21 19:44:09.163: INFO/myActivity(786): FPS: 22.05422794901088 Touch: false
12-21 19:44:10.644: INFO/myActivity(786): FPS: 18.6956805300596 Touch: false
12-21 19:44:12.124: INFO/myActivity(786): FPS: 17.434180581311054 Touch: false
12-21 19:44:13.594: INFO/myActivity(786): FPS: 18.71932038510891 Touch: false
12-21 19:44:14.504: INFO/myActivity(786): FPS: 40.94571503868066 Touch: true
12-21 19:44:14.924: INFO/myActivity(786): FPS: 57.061200121138576 Touch: true
12-21 19:44:15.364: INFO/myActivity(786): FPS: 62.54377946377936 Touch: true
12-21 19:44:15.764: INFO/myActivity(786): FPS: 64.05005071818726 Touch: true
12-21 19:44:16.384: INFO/myActivity(786): FPS: 50.912951172948155 Touch: true
12-21 19:44:16.874: INFO/myActivity(786): FPS: 55.31242053078078 Touch: true
12-21 19:44:17.364: INFO/myActivity(786): FPS: 59.31625410615102 Touch: true
12-21 19:44:18.413: INFO/myActivity(786): FPS: 36.63504170925923 Touch: false
12-21 19:44:19.885: INFO/myActivity(786): FPS: 18.099130467755923 Touch: false
12-21 19:44:21.363: INFO/myActivity(786): FPS: 18.458978222946566 Touch: false
12-21 19:44:22.683: INFO/myActivity(786): FPS: 25.582179409330823 Touch: true
12-21 19:44:23.044: INFO/myActivity(786): FPS: 60.99865521942455 Touch: true
12-21 19:44:23.403: INFO/myActivity(786): FPS: 74.17873975470984 Touch: true
12-21 19:44:23.763: INFO/myActivity(786): FPS: 64.25663040460714 Touch: true
12-21 19:44:24.113: INFO/myActivity(786): FPS: 62.47483457826921 Touch: true
12-21 19:44:24.473: INFO/myActivity(786): FPS: 65.27969529547072 Touch: true
12-21 19:44:24.825: INFO/myActivity(786): FPS: 67.84743115273311 Touch: true
12-21 19:44:25.173: INFO/myActivity(786): FPS: 73.50854551357706 Touch: true
12-21 19:44:25.523: INFO/myActivity(786): FPS: 70.46432534585368 Touch: true
12-21 19:44:25.873: INFO/myActivity(786): FPS: 69.04076953445896 Touch: true

Ответы [ 2 ]

6 голосов
/ 21 декабря 2010

Если вы запускаете эмулятор в Windows, тогда я думаю это объясняет это:

Описание параметров производительности в Windows

... Кроме того, помните, что Microsoft Windows NT также использует дополнительный приоритет корректировки (обычно 2) на основе других события, такие как мгновенное повышение приоритет потока, когда он возвращается из вызов ввода / вывода при возвращении из вызов подсистемы пользовательского режима или когда получение ввода с клавиатуры.

Я видел этот эффект много раз. И я просто взглянул на эмулятор с помощью ProcessExplorer: хотя я не могу сказать наверняка, похоже, что эмулятор работает в одном потоке Windows. Если вы не видите подобного повышения производительности на реальном устройстве Android, я бы предположил, что это влияние ОС Windows, а не AndroidOS.

0 голосов
/ 07 февраля 2012

У меня была такая же проблема, и она также возникает на телефоне, хотя она гораздо менее заметна. Я думаю, я знаю, что случилось. Я использую обработчик с postDelayed (...) для моего основного цикла. Я думаю, что рисунок сначала каким-то образом блокирует очередь сообщений, а затем touchevent заставляет приложение проверять очередь перед следующей запланированной проверкой. Почему проблема возникает несколько случайно - загадка.

Я решил это, поместив строку postDelayed перед чертежом в Runnable.

Это точно не имеет ничего общего с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...