The interface is straightforward, but it's in the implementations and in the Game/Screen structure where I've been caught out. If you'd like some specifics, here a few things that have caused me to stumble recently:
* On app start, create() is called on the Game, in which you'll call setScreen() on your first Screen - this calls show() then resize(). Then create() returns and the next line calls resize() on the Game, which calls resize() on the Screen again. Lesson is, you can rely on resize() being called on the Game instance before the Screen almost
all the time, just not on first creation.
* On Android pressing home then re-running an app is essentially equivalent to minimize/restore on desktop. However, on Android the calls are resize() then resume(), but on the desktop you get resume() then resize().
* On desktop, pause() might mean just unfocused, while on Android pause() is seen when the activity moves into the stopped state. An activity in stopped state may be terminated without a call to onDestroy(), so you've got to persist any data you need before then, so lesson is to persist in pause() and restore in resume(). But just need to consider that the desktop app may still be visible and rendering in between these calls.
I haven't dug much into the internals of libGDX so I don't know for sure, but the second item doesn't look
intentional to me; that's why I suggested testing lifecycle on the specific platforms and the specific version people are using, just in case this kind of thing changes between releases.