Hi folks, I stumbled over the same issue. Unfortunaly this problem is not a problem of retained messages setting.
In the tiles, I publish to "cmnd/../POWERX" and subscripe to "stat/../POWERX".
If the app is not viewed, the display is off or the mobile phone is not in the network, the status in the app will not be updated by subscription.
I guess this is formely ok or a wanted behavior.
The real problem is, that the subscription is not refreshed if the app becomes visible again.
I tried to handle that by using app.publish with a wrong payload, for example app.publish('cmnd/plug_A1B2C3/POWER2', 'x', false, '0') to get a message with the current state on the 'stat/' topic.
But the APP is spaming the publishing method if I put it in the "on display" handler, what effectifely DDoS the mqtt broker.
A solution for this can be the call of the subscription once again for each tile in the onResume() method of the android app.
Maybe there is a better life cycle method now, I hasn't develop on adroid since a few years.