Keep activity running over screen lock when the screens alseep

后端 未结 2 1872
隐瞒了意图╮
隐瞒了意图╮ 2020-12-10 16:49

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

2条回答
  •  既然无缘
    2020-12-10 17:37

    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();
    

提交回复
热议问题