I have seen some postings on this subject, but none of them have satisfactory answers.
Assume that I start a worker thread from my main (one-and-only) Activity
, in its onCreate()
method. Then I call finish()
to cause the Activity
to terminate.
At that point, the task it belongs to gets destroyed (since there are no longer any Activity
in it). The app (and the process running it) may continue to exist, however, in empty "skeleton" form, so that it can be restarted quickly if desired (although it would be highly susceptible to being killed by the system).
Assuming the above is correct -- when is the worker thread killed? Is it only killed when the system actively destroys the process?
In my case, my worker thread exists as a listener for a Bluetooth connection; when received, it will fire up the desired Activity
again. In this situation there is no actively running component (Activity
, Service
, ContentProvider
or BroadcastReceiver
). It seems to me that this should work, except that something is killing my worker thread.
I am aware that I could do this (and with less pain) by using a background Service
. However, I'm curious about why this isn't working.
Thanks, Barry
Android App lifecycle has a nice example that is very on topic:
In short, its really not very predictable if you thread would get a chance to run until termination or process will be killed beforehand, you should NOT definitely rely on any order/behavior.
Worth mentioning separately that its fairly easy to leak your activity along with thread even if you finish() it, but if its your last/only activity it does not change the picture