[android-developers] Re: How does Android decide if an Activity should be restarted after the Activity crashes?

2009-10-19 Thread mikael . sollenborn


Hello,

It's been almostĀ  a week since I posted this
question, and it seems that it's still not accepted (or denied)?

Is this normal waiting time for an issue to be considered by the
moderators? I'm sorry if that is the case, just wondering...

Best regards,
Mikael Sollenborn


> Hello,
> 
> we are developing an application where we are depending
on a native,
> custom-written library which sometimes crashes.
When the Activity
> crashes (it's the Activity's SurfaceView that
crashes, either while
> resuming or pausing Activity) we would
like to automatically restart
> the Activity that was just
running, preferably without seeing the idle
> screen in
between.
> 
> What we find strange is that sometimes, our
Activity is restarted by
> Android automatically after the crash,
and sometimes not. How does
> Android decide this? Is it somehow
dependant on exactly what the
> Activity was doing at the time of
the crash and if that was considered
> important enough to
restart? How can we force a restart to make sure
> the Activity
doesn't quit after a crash?
> 
> Some notes:
> 
> Running on device flashed with Android 1.5.
> The Activity
is running as singleInstance. Doesn't seem to make much
>
difference which mode it is though.
> 
> Other methods we
have tried are:
> 
> 1) Since we can predict when crash is
going to happen(but not stop
> it), use AlamrManager to start the
Activity again via an Intent, 3
> seconds later. Has the
disadvantages that 1) need to be able to
> predict crash 2) if
crash takes longer than 3 seconds (normally about
> 2s) it won't
work  3) Idle screen is seen for about ~1 s, since some
> slack is
needed.
> 
> 2) Start a Service, then let the Service
(which always seems to be
> restarted by Android after crashing)
start the Activity in its onStart
> method. Has the disadvantage
that Android doesn't restart the service
> until 5 seconds after
the crash, so the idle screen is seen quite
> along time before
Activity restarts. Is it possible to modify how long
> it takes
before the Service is restarted by the Android system?
> 
> 
> Any help would be greatly appreciated.
>

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



[android-developers] Re: How does Android decide if an Activity should be restarted after the Activity crashes?

2009-10-14 Thread Dianne Hackborn
Um.  Regardless of how quickly the system restarts your activity, this is a
wretched user experience.  I can hardly bring myself to help someone do
this.

Definitely don't schedule an alarm to do this.  Please.

You are NEVER going to be able to fully prevent whatever was behind your
activity (typically from home) appearing.  Your app crashed.  Its UI is
gone.  We aren't going to wait around for it, we are showing what was behind
it.

As far as when an activity is restarted -- if the process running the
foreground activity goes away, the system will throw away that activity if
it does not have a valid saved state for it (typically meaning it is paused
and has given the system the result of onSaveInstanceState from before the
pause).  Once it has decided whether or not to throw away that activity, it
will resume whatever activity is now at the top of the stack.  If this is
one of your activities -- either because you have another behind the one
that crashed, or the one that crashed was somehow it the settled pause state
-- then it will start your process again to show that top activity.

On Wed, Oct 14, 2009 at 10:35 AM, mik...@tat
wrote:

>
> Hello,
>
> we are developing an application where we are depending on a native,
> custom-written library which sometimes crashes. When the Activity
> crashes (it's the Activity's SurfaceView that crashes, either while
> resuming or pausing Activity) we would like to automatically restart
> the Activity that was just running, preferably without seeing the idle
> screen in between.
>
> What we find strange is that sometimes, our Activity is restarted by
> Android automatically after the crash, and sometimes not. How does
> Android decide this? Is it somehow dependant on exactly what the
> Activity was doing at the time of the crash and if that was considered
> important enough to restart? How can we force a restart to make sure
> the Activity doesn't quit after a crash?
>
> Some notes:
>
> Running on device flashed with Android 1.5.
> The Activity is running as singleInstance. Doesn't seem to make much
> difference which mode it is though.
>
> Other methods we have tried are:
>
> 1) Since we can predict when crash is going to happen(but not stop
> it), use AlamrManager to start the Activity again via an Intent, 3
> seconds later. Has the disadvantages that 1) need to be able to
> predict crash 2) if crash takes longer than 3 seconds (normally about
> 2s) it won't work  3) Idle screen is seen for about ~1 s, since some
> slack is needed.
>
> 2) Start a Service, then let the Service (which always seems to be
> restarted by Android after crashing) start the Activity in its onStart
> method. Has the disadvantage that Android doesn't restart the service
> until 5 seconds after the crash, so the idle screen is seen quite
> along time before Activity restarts. Is it possible to modify how long
> it takes before the Service is restarted by the Android system?
>
>
> Any help would be greatly appreciated.
>
> >
>


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