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
What if you use a wakelock. For example:
@Override
public void onCreate(Bundle savedInstanceState) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
// do your things, even when screen is off
}
@Override
protected void onDestroy() {
wl.release();
}
You must also have a wakelock permission is AndroidManifest.xml
uses-permission android:name="android.permission.WAKE_LOCK"
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();