Yeah there are two big things I have on my priority list to address this: - Some facility to figure out which applications are draining your battery.
- A way to entirely force stop an application: kill all its processes, stop all its services, unregister its alarms, remove its notifications, etc. There is actually already a mechanism to do this in the system, we just need to surface the API and provide a UI for it. On Tue, Jan 27, 2009 at 9:32 PM, EboMike <[email protected]> wrote: > > A task manager isn't really essential for Android. I think I mostly > need it to get rid of bad apps - I typically have enough RAM left for > all my apps to run, but sometimes I just don't WANT them to run > because they are badly written and seem to hog CPU time (i.e. they're > running a worker thread that keeps on running, at least that's my > impression). > > My battery kept getting drained pretty quickly today even though I > kept recharging it every few hours and I always had the launcher open, > and the only way I could solve that problem was by resetting the > phone. While this particular case was a persistent app that - like you > mentioned - kept relaunching itself, I can see something similar > happen with a rogue worker thread that I can't shut off (other than by > launching ten heavy apps just go essentially push out the offending > app). > > > On Jan 27, 9:23 pm, Dianne Hackborn <[email protected]> wrote: > > In general, just going through a couple heavy applications (web browser, > > maps, camera) without pressing back will remove previous apps as much as > any > > "task manager" kind of program that you use to kill processes. The > system > > will kill the background app's process as it needs memory for the other > > apps, and this will happen pretty quickly when running through larger > > applications. > > > > For example, if you look at the output of "adb logcat -b events" you can > see > > this happen as I go through apps: > > > > First I start Alarm Clock: > > > > I/am_proc_start( 56): > > > [13494,10024,com.android.alarmclock,activity,com.android.alarmclock/.AlarmClock] > > I/am_restart_activity( 56): > > [1131476400,119,com.android.alarmclock/.AlarmClock] > > I/am_on_resume_called(13494): com.android.alarmclock.AlarmClock > > I/activity_launch_time( 56): > > [1131476400,com.android.alarmclock/.AlarmClock,1230] > > > > Then I press home and start Browser (here the Browser process was already > > running, so it isn't started): > > > > I/am_pause_activity( 56): > [1131476400,com.android.alarmclock/.AlarmClock] > > I/am_resume_activity( 56): > [1130026096,2,com.android.launcher/.Launcher] > > I/am_pause_activity( 56): [1130026096,com.android.launcher/.Launcher] > > I/am_new_intent( 56): > > > [1131909552,62,com.android.browser/.BrowserActivity,android.intent.action.MAIN,,,272629760] > > I/am_resume_activity( 56): > > [1132547568,62,com.android.browser/.BrowserActivity] > > > > Then home again and go to Maps (and again the Maps process was already > > running): > > > > I/am_pause_activity( 56): > > [1132547568,com.android.browser/.BrowserActivity] > > I/am_resume_activity( 56): > [1130026096,2,com.android.launcher/.Launcher] > > I/am_pause_activity( 56): [1130026096,com.android.launcher/.Launcher] > > I/am_new_intent( 56): > > > [1131416032,175,com.google.android.apps.maps/com.google.android.maps.MapsActivity,android.intent.action.MAIN,,,272629760] > > I/am_resume_activity( 56): > > > [1132428392,175,com.google.android.apps.maps/com.google.android.maps.MapsActivity] > > > > Next home and then Camera, again the process was already running: > > > > I/am_pause_activity( 56): > > > [1132428392,com.google.android.apps.maps/com.google.android.maps.MapsActivity] > > I/am_resume_activity( 56): > [1130026096,2,com.android.launcher/.Launcher] > > I/am_pause_activity( 56): [1130026096,com.android.launcher/.Launcher] > > I/am_resume_activity( 56): [1132606040,176,com.android.camera/.Camera] > > > > Back to home and then to Calendar, and in this case the Calendar process > > wasn't already running so needs to be started: > > > > I/am_pause_activity( 56): [1132606040,com.android.camera/.Camera] > > I/am_resume_activity( 56): > [1130026096,2,com.android.launcher/.Launcher] > > I/am_create_activity( 56): > > > [1132590128,177,com.android.calendar/.LaunchActivity,android.intent.action.MAIN,,,270532608] > > I/am_pause_activity( 56): [1130026096,com.android.launcher/.Launcher] > > I/am_proc_start( 56): > > > [13525,10006,com.android.calendar,activity,com.android.calendar/.LaunchActivity] > > I/am_create_activity( 56): > > [1131596992,177,com.android.calendar/.DayActivity,,,,0] > > I/am_pause_activity( 56): > > [1132590128,com.android.calendar/.LaunchActivity] > > I/am_finish_activity( 56): > > [1132590128,177,com.android.calendar/.LaunchActivity,app-request] > > > > And now we will go home and go to Gmail, at which point the system will > kill > > the alarm clock process because there is not enough memory to run > everything > > we have done so far + Gmail: > > > > I/am_pause_activity( 56): > [1131596992,com.android.calendar/.DayActivity] > > I/am_resume_activity( 56): > [1130026096,2,com.android.launcher/.Launcher] > > I/am_create_activity( 56): [1132519848,178, > > > com.google.android.gm/.ConversationListActivityGmail,android.intent.action.MAIN,,,270532608 > > ] > > I/am_pause_activity( 56): [1130026096,com.android.launcher/.Launcher] > > I/am_proc_start( 56): [13540,10020,com.google.android.gm,activity, > > com.google.android.gm/.ConversationListActivityGmail] > > > > Boom! Alarm clock is gone, and Gmail continues: > > > > I/am_proc_died( 56): [13494,com.android.alarmclock] > > I/am_create_activity( 56): [1132200088,178, > > > com.google.android.gm/.ConversationListActivity,android.intent.action.MAIN,,,41943040 > > ] > > I/am_pause_activity( 56): [1132519848, > > com.google.android.gm/.ConversationListActivityGmail] > > I/am_finish_activity( 56): [1132519848,178, > > com.google.android.gm/.ConversationListActivityGmail,app-request] > > > > Oh and bye-bye Browser too. :) > > > > I/am_proc_died( 56): [13383,com.android.browser] > > > > Some things to note about this: > > > > - The android system outright kills a processes when it needs more memory > > elsewhere, no less than your task manager would be killing a process if > you > > request it. We don't kindly ask a process to go away and assume it is > well > > behaved and will respect that, we just kill it dead. > > > > - Just killing a process is -not- going to help you much with > applications > > that have background services running, because the Android system will > > quickly schedule them to restart since as far as it is concerned that > > service should still be running. > > > > - Yes, a "running application manager" kind of thing would be nice, but > just > > looking at things in terms of running processes misses a lot of the key > > things going on: who is running services, what processes are in the > > foreground vs. background vs. empty, and apps doing things like > scheduling > > alarms that cause them to be launched at regular intervals. > > > > > > > > On Tue, Jan 27, 2009 at 8:51 PM, EboMike <[email protected]> wrote: > > > > > The "Task Manager for Root Users" app works just fine for the purpose, > > > no point for every single application to implement its own custom exit > > > functionality. > > > That said, a task manager is somewhat of a necessity to get rid of > > > rogue apps that feel like onPause() doesn't apply to them and have > > > some threads running in the background. > > > > > It's not as much of a problem as in Windows Mobile where you just had > > > to manually kill tasks every so often to keep your system somewhat > > > responsive, but I've found myself use the Android Task Manager app a > > > few times to kill an app that refused to STFU. > > > > > On Jan 27, 1:02 pm, technick <[email protected]> wrote: > > > > It would be nice to have a will to exit applications IMHO > > > > > > On Jan 27, 3:34 pm, "[email protected]" > > > > > > <[email protected]> wrote: > > > > > Hi there, > > > > > > > I wonder: should an Android application have an exit button (or > menu > > > > > function) or not? > > > > > Ok, if there's some service or other resources consuming something > > > > > running in the background I think the user should have an option to > > > > > make it stop. But what about an application that would just sit > there, > > > > > inactive? > > > > > > > If I take a look at the standard application it seems that the > Android > > > > > philosophy is to keep the applications running and let the system > > > > > decide when to stop and destroy an application idling in the > > > > > background. I didn't recognize "exit" or "quit" options in the > > > > > standard programs. > > > > > > > On the other hand - why not let the user decide and give the option > to > > > > > quit some software if he knows it's currently not used. > > > > > > > So, what's the advice here? > > > > > Give even a "passive" application an exit button? > > > > > Or not and just leave it to the system? > > > > > > > thanks - > > > > -- > > Dianne Hackborn > > Android framework engineer > > [email protected] > > > > Note: please don't send private questions to me, as I don't have time to > > provide private support. All such questions should be posted on public > > forums, where I and others can see and answer them. > > > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support. 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

