Я разрабатываю игру, используя библиотеку libgdx.
Когда я загружаю программу в первый раз, текстуры загружаются отлично, и все в порядке
Когда я закрываю приложение и загружаю его снова (я предполагаю, что Android каким-то образом кэширует его из памяти) - загружаются неправильные текстуры.
Если я очищу игру из истории и повторю попытку, она отлично работает.
-
Теперь он работает следующим образом: я использую SpriteBatch
для рисования реальной игры. У меня есть отдельный SpriteBatche
, чтобы нарисовать фон и интерфейс (которые загружаются очень хорошо). При удалении уровня я располагаю SpriteBatch
.
for (Block block : world.getDrawableBlocks(this.width, this.height))
{
spriteBatch.draw(block.getTexture(1f), block.getPosition().x, block.getPosition().y, block.SIZE_X, block.SIZE_Y);
}
-
Текстуры, которые я загружаю с использованием кеша, я написал сам, чтобы предотвратить загрузку одного и того же изображения более одного раза. Я очищаю кеш при создании приложения. Затем я сохраняю объект Texture/TextureRegion в самом объекте, который получается через .getTexture()
И вот мой код, который я использую для загрузки текстур
public static Texture loadTexture(String path)
{
//Do we have the texture cached?
if (textures.containsKey(path))
{
//return it
return textures.get(path);
}
else
{
//load it from the filesystem
Texture texture = new Texture(Gdx.files.internal(path));
//cache it
textures.put(path, texture);
//return it
return texture;
}
}
Я подключил отладчик, и загружаемые текстуры имеют правильный путь.
В примере с рисунком текстура, подлежащая обмену, является частью шрифта, который ничего не хранит в моем кеше.
-
Итак, я скорее застрял здесь.
Сейчас я использую непослушное решение для уничтожения процесса вручную:
@Override
public void onDestroy()
{
super.onDestroy();
this.finish();
android.os.Process.killProcess( android.os.Process.myPid() );
}
Это работает, но довольно грязно.
Когда процесс выходит из строя из-за исключения, ошибка не возникает.
Я предполагаю, что так или иначе библиотека кэширует свои собственные текстуры, которые как-то повреждаются, но я понятия не имею, как проверить и как их очистить.
Итак, любые идеи?