Could I suggest an update to documentation then? Do you guys need a bug report to be lodged to do this kind of thing? Does this also apply to services? The documentation there also states that the service will be sent a 'courtesy' stop notification... I think things could go quite badly if the code were to just stop in the middle of (say) a database update.
On Jun 12, 6:29 pm, Dianne Hackborn <hack...@android.com> wrote: > Application.onTerminate() is actually never ever called. The only time it > is ever called is when the system is running in single process mode, and > faking processes as multiple threads in one single process. This was the > way the system was running very early in development, and onTerminate() was > needed for applications in that situation to clean up their globals, but > these days it is just old useless cruft. > > And as far as the OS deciding to kill your process... well, you don't care > about that. It killed your process. Everything your process was doing, all > the network connections it had opened, all the threads it had running, are > gone. No effort needed on your part there. :) > > On Fri, Jun 12, 2009 at 11:29 AM, Streets Of Boston <flyingdutc...@gmail.com > > > > > wrote: > > > My solution works fine to check if you have a configuration-change or > > not. > > But it won't work in case the OS decides to kill the process, e.g. > > when memory runs low or when the phone is shut off. The Application's > > onTerminate, as Mark noted, may help a little, but it's not guaranteed > > that this method is called. > > > On Jun 12, 2:16 pm, Max Salley <msalley....@gmail.com> wrote: > > > On Jun 9, 1:58 pm, "Mark Murphy" <mmur...@commonsware.com> wrote: > > > > > > Yes, but when the app closes I want to close the connections (which > > > > > requires sending data - not just releasing the objects) regardless of > > > > > what's holding them. How can I tell when the app exits? > > > > > I think you are attributing too much power to the notion of apps > > exiting. > > > > > Example #1: somebody is using your app. Then a phone call comes in. > > Your > > > > activity is merely stopped, not destroyed. Did your app "exit"? > > > > > Example #2: somebody is using your app. Then a phone call comes in. > > > > Courtesy of a Bluetooth headset, the user yaks on the phone while also > > > > TXTing a few people, then gets a URL in an SMS, which leads to a Web > > site > > > > in the Browser app. All along, your app's activities are back in the > > > > stack, in a stopped state. An hour passes this way. Did your app > > "exit"? > > > > > Example #3: Same as example #2, but the user then had to go to class, > > and > > > > so she thumbs off her phone, sticks it in her purse, and leaves the > > phone > > > > asleep for eight hours. Then, a call comes in. Your app's activities > > are > > > > still back on the stack, in a stopped state. Did your app "exit"? > > > > > Example #4: Same as example #3, but the user responds to enough calls > > and > > > > messages after the 8-hour device sleep that Android closes up your > > > > activities to free up RAM. Placeholders for those activities are still > > > > back on the stack, though, and if the user were to back-button to them, > > > > they would want to pop back up. Did your app "exit"? > > > > Yes, those are all instances in which I would consider the app exited > > > > > You can try things like creating custom Application classes and > > responding > > > > to onTerminate(), but I suspect you have broader problems if you worry > > > > about apps "exiting", since onTerminate() may not be called in any of > > > > those examples. > > > > > Protocols that require you to send network data before closing a > > > > connection will suck mightily in any mobile environment, simply because > > > > the device can and will fall asleep at any point. Android's usage > > model, > > > > whereby users are not concerned with having to specifically "exit" > > apps, > > > > exacerbates that issue. > > > > "required" was the wrong word. It would be insane for an app not to > > > be able to deal with a mobile device dropping off the face of the > > > earth, so to speak. When possible, however, I would like to be able > > > to be able to tear down the connection in a controlled fashion. > > > Boston's solution seems to be what I want > > > > > -- > > > > Mark Murphy (a Commons Guy)http://commonsware.com > > > > _The Busy Coder's Guide to Android Development_ Version 2.0 Available!- > > Hide quoted text - > > > > - Show quoted text -- Hide quoted text - > > > > - Show quoted text - > > -- > Dianne Hackborn > Android framework engineer > hack...@android.com > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---