I've read a lot around Android service. As I understand, the lifecycle is:
void onCreate() void onStart(Intent intent) ... void onDestroy()
http://www.linuxtopia.org/online_books/android/devguide/guide/topics/fundamentals.html
But there's is no onStop method. Questions:
For context, I have some resources I'd like to allocate and release while the service is running (in a "started"), and another set of resources I'd like to allocate and release while the service is a "created" state.
onStop() method is called after onPause() method when activity goes in background. This method can be used to stop Api calls etc.
The onStop() function is called when the application enters the stopped state. In this state, the activity is no longer visible to the user.
If screen times out on your activity, then onPause is called. After sometime if you will not open the screen then onStop will be called.
onPause() is always called. This is guaranteed. If you need to save any state in your activity you need to save it in onPause() . onStop() may be called after onPause() , or it may not.
As I understand, the lifecycle is:
onStart()
has been deprecated for a few years. onStartCommand()
is the current lifecycle method.
Why isn't there a stop method?
Because there is no need for one.
What happens when a stopService request is made on my Service?
You will be called with onDestroy()
.
Can I detect this event?
You can override onDestroy()
.
I'd like to enforce (or at least verify) that my service is a singleton within a process. How can I do this (or does Android enforce this behind the scenes)?
Services are natural singletons. There will be 0 or 1 instance of your service at any given time.
For context, I have some resources I'd like to allocate and release while the service is running (in a "started"), and another set of resources I'd like to allocate and release while the service is a "created" state.
The "created" state is used both with the command pattern (startService()
and onStartCommand()
) and the binding pattern (bindService()
and onBind()
). Hence, if you call startService()
, your service will be purely in the "created" state for hopefully less than a millisecond.
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