У меня есть такой классПочему этот код заставляет мое приложение останавливаться при onPause и onResume?
class C
{
MainActivity mainActivity;
boolean isPaused;
public void A()
{
B b = new B()
{
public void run()
{
isDone = true;
}
};
mainActivity.runOnUiThread(b);
while(!b.isDone && !isPaused)
{
try { Thread.sleep(1); }
catch(Exception e)
{
e.printStackTrace();
break;
}
}
}
}
abstract class B implements Runnable
{
public boolean isDone = false;
}
Тогда это называется визуализатора, который реализует GLSurfaceView.Renderer
@Override
public void onDrawFrame(GL10 gl)
{
c.A();
}
с является InstanceOf C и mainActivity называют GLSurfaceView.onPause и onResume когда OnPause и onResume из сам называется. Он также устанавливает isPaused c. В режиме onPause и onResume GLSurfaceView просто вызывайте его super onPause и onResume.
Затем, когда onPause и onResume вызываются, мое приложение замерзает. Чтобы найти проблему, я удалил другой код, кроме объяснения, но это все еще происходит. Как я могу это исправить?
Благодарим вас за ответ. Тем не менее, я должен ждать b, так как он должен быть вызван для каждого onDrawFrame. Как я могу это сделать, не блокируя поток пользовательского интерфейса? –
Что вы собираетесь делать? Этот код, похоже, не имеет реальной логики. Если это длительный процесс, это не должно делаться в потоке пользовательского интерфейса. – dharms
в b, я получаю привязку к GoogleMap, вызывая GoogleMap.getProjection(). GetVisibleRegion(). LatLngBounds. –