Application loading the wrong textures on opening again

Viewed 1792

I'm developing a game using libgdx library.

When I load the program for the first time, the textures load perfectly and everything is fine

enter image description here

When I close the application, and load it again (I'm assuming Android is somehow caching it from memory) - the wrong textures get loaded.

enter image description here

If I clear the game from history, and try again, it works perfectly.

-- The way it works currently is as follows - I use a SpriteBatch to draw the actual game. I have seperate SpriteBatches to draw the background and Interface (which are loading just fine). On disposing a level, I dispose the 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);
        }

--

The textures I load using a cache I wrote myself to prevent the same image being loaded more than once. I clear the cache upon the creation of the application. I then keep a Texture / TextureRegion in the object itself, which is obtained through .getTexture()

And here's my code which I use to load the Textures

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;


        }
    }

I attached a debugger and the textures being loaded DO have the correct path.

In the picture example, the texture being swapped happens to be part of the font, which is nothing which is EVER stored in my cache.

--

So, I'm rather stuck here.

Right now I'm using the naughty solution of killing the process manually on dispose:

 @Override
    public void onDestroy()
    {
        super.onDestroy();
        this.finish();
        android.os.Process.killProcess( android.os.Process.myPid()  ); 
    }

This works but is pretty dirty.

When the process fails due to an exception, the bug does not occur.


I'm guessing that somehow the library is caching its own textures which are somehow getting corrupted, but I have no idea how to check, nor how to clear them.

So, any ideas?

2 Answers
Related