So i built an app that functions as a lock screen replacement. I use a broadcast receiver and a service to start my activity after Intent.ACTION_SCREEN_OFF
. So
One way you might want to try is to make sure you app never sleeps. On short sleeps it will stay running. On long sleeps your app itself is asleep. I was able to get around this myself with using the PowerManager.Wakelock. Only issue is that this will drain more battery if your app is using cpu cycles.
/** wake lock on the app so it continues to run in background if phone tries to sleep.*/
PowerManager.WakeLock wakeLock;
@Override
public void onCreate(Bundle savedInstanceState) {
...
// keep the program running even if phone screen and keyboard go to sleep
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
...
}
// use this when screen sleeps
wakeLock.acquire();
// use this once when phone stops sleeping
wakeLock.release();