Ошибка "EGL_BAD_MATCH" в эмуляторе Android Studio
У меня есть один вопрос, что это?
E/EGL_emulation: tid 3912: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
что мне делать, чтобы разрешить эту ошибку?
public class Main extends AppCompatActivity {
public TextView score;
public ImageView alergator1;
public ImageView alergator2;
public FrameLayout frame;
public int scoreINT;
public float frameHigh;
public float frameWidh;
public float alergator1X;
public float alergator1Y;
public float alergator2X;
public float alergator2Y;
public ImageView miscare;
public int x;
private Handler handler = new Handler();
private static Timer timer = new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
score = (TextView) findViewById(R.id.Score);
alergator1 = (ImageView) findViewById(R.id.runner);
alergator2 = (ImageView) findViewById(R.id.runner2);
frame = (FrameLayout) findViewById(R.id.Frame);
frame.post(new Runnable() {
@Override
public void run() {
frameHigh = frame.getHeight();
frameWidh = frame.getWidth();
}
});
alergator1.post(new Runnable() {
@Override
public void run() {
alergator1X = frameWidh / 2;
alergator1.setX(alergator1X);
alergator1Y = frameHigh - 250;
alergator1.setY(alergator1Y);
}
});
alergator2.post(new Runnable() {
@Override
public void run() {
alergator2X = frameWidh / 2;
alergator2.setX(alergator2X);
alergator2Y = frameHigh - 250;
alergator2.setY(alergator2Y);
}
});
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
x++;
if (x % 2 == 0) {
alergator1.setVisibility(View.INVISIBLE);
alergator2.setVisibility(View.VISIBLE);
} else {
alergator2.setVisibility(View.INVISIBLE);
alergator1.setVisibility(View.VISIBLE);
}
}
});
}
}, 0, 900);
Это код, приложение работает правильно, но я хочу знать, что происходит. Может быть, мой код беспорядочен, но я новичок.
Ответы
Ответ 1
EGL означает Emulated Graphics Library. Операционная система мобильного устройства Android использует EGL для рендеринга 3D-графики.
Узнайте больше о EGL из wiki: https://en.wikipedia.org/wiki/EGL_(API)
Когда он говорит EGL_BAD_MATCH, ваша Emulated Graphics Library, которую вы/система выбрали, плоха. Существует два режима EGL, как показано на рисунке ниже.
.
Решение: какой режим дает проблемы, просто перейдите в другой режим, он должен исправить. Имейте в виду, что работа в режиме эмуляции программного обеспечения может работать значительно медленнее, чем при установленном режиме эмуляции. Бывают случаи, когда ошибки отображаются (показывается), но приложение работает нормально. Если это так, вы можете проигнорировать ошибки и насладиться превосходной графической эмуляцией.
Ответ 2
У меня также возникла аналогичная проблема, я попробовал простую примерную программу, и она показывает эту ошибку. В моем случае я отключил функцию мгновенного запуска Android-студии и исчез. Я не знаю, почему, но вы можете попробовать.