Android在API21(Android5.0)以下,crash后会直接退出整个应用,但是在API21(Android5.0)以上系统时,会遵循以下原则重启:

  1. 包含service:如果程序crash的时候运行着service,那么系统会重新启动service。
  2. 不包含service,但是当前栈中包含两个Activity,A->B,如果B crash,那么系统会重启A。
  3. 不包含service,但是当前栈中包含三个Activity,A->B->C,如果C crash,那么系统会重启B,并且A仍然存在,即可以从重启的B back到A。