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
-~----------~----~----~----~------~----~------~--~---

Reply via email to