У меня возникают странные проблемы с заиканием в моей игре, хотя мой FPS никогда не падает ниже 30. Примерно каждые 5 секунд моя игра заикается.Из-за проблем со сборкой мусора у меня изначально возникало заикание каждые 1-2 секунды, но я их уже разобрал и часто буду обходиться без сборки мусора 15-20 секунд.
Несмотря на это, моя игра периодически даже заикаетсякогда GC не указан в logcat где-нибудь рядом с заиканием.Даже когда я вынимаю большую часть своего кода и просто делаю код «физики» из приведенного ниже кода, у меня возникает эта странная проблема замедления.Я чувствую, что что-то упускаю или что-то упускаю.
Разве этот "истекший" код, который я вставил, не останавливает никаких различий в скорости главного героя, связанных с изменениями в FPS?* Любые входные данные / теории были бы потрясающими.
Физика:
private void updatePhysics()
{
//get current time
long now = System.currentTimeMillis();
//added this to see if I could speed it up, it made no difference
Thread myThread = Thread.currentThread();
myThread.setPriority(Thread.MAX_PRIORITY);
//work out elapsed time since last frame in seconds
double elapsed = (now - mLastTime2) / 1000.0;
mLastTime2 = now;
//measures FPS and displays in logcat once every 30 frames
fps+=1/elapsed;
fpscount+=1;
if (fpscount==30)
{
fps=fps/fpscount;
Log.i("myActivity","FPS: "+fps+" Touch: "+touch);
fpscount=0;
}
//this should make the main character (theoretically) move upwards at a steady pace
mY-=100*elapsed;
//increase amount I translate the draw to = main characters Y
//location if the main character goes upwards
if (mY<=viewY)
{
viewY=mY;
}
}