И альтернативы нормальной нет, постоянный long pool или websocket всё равно в фоне не выживут, да и выведут приложение на первое место по жору батареи...
Так я только и предполагаю что ты для фона его используешь. Когда приложение уже открыто в нем нет надобности. Можно подстраховаться, для фона, и Worker'a запланировать, вдруг пуши не дойдут