I want to figure out how to detect when the phone wakes up from being in the black screen mode and write a handler for that event. Is that possible? It seems like this would be something a Broadcast Receiver should handle? Or is there a better or more proper way?
APPROACH : Create your own receiver class which will extend the BroadcastReceiver class of the default android. content package. You will need to override the onRecieve() method, which will take context and intent as params.
Please note, that when an app is killed via "FORCE CLOSE" by the user, all the app's broadcast receiver are immediately put on pause, and the system prevents them from receiving future broadcasts until the user manually reopens that app.
A broadcast receiver (receiver) is an Android component which allows you to register for system or application events. All registered receivers for an event are notified by the Android runtime once this event happens.
What is the time limit of broadcast receiver in Android? There is also a 5-10 second limit, after which Android will basically crash your app. However, you cannot reliably fork a background thread from onReceive() , as once onReceive() returns, your process might be terminated, if you are not in the foreground.
If you have a Service that it active you can catch these events with
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// do something
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
However this relies on having a perpetually running service which I have recently learned is discouraged because it is brittle (the OS likes to close them) and uses resources permanently.
Disappointingly, it seems it is not possible to have a receiver in your manifest that intercepts SCREEN_ON events.
This has come up very recently:
android.intent.action.SCREEN_ON doesn't work as a receiver intent filter
also
Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?
You could also have a broadcast receiver that catches the USER_PRESENT broadcast intent for when the user has unlocked the device. Naturally some versions of Honeycomb don't honor this but for all non brain-dead versions of Android (2.x and 4.x), it works nicely.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With