рдЬреИрд╕рд╛
рдХрд┐ рд▓реЗрдЦ рдХреЗ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕рд╣рдорддрд┐ рд╡реНрдпрдХреНрдд рдХреА рдЧрдИ рд╣реИ, рдЗрд╕рдореЗрдВ рд╣рдо рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЖрдЬ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕рдВрдкреВрд░реНрдг рд╕рд┐рджреНрдзрд╛рдВрдд
рдбреЗрд╡рд▓рдкрд░. android.com/guide/topics/manifest/activity-element.html рдкрд░ рдореМрдЬреВрдж
рд╣реИ , рдореИрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрддрд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдЫ рдорд╛рдирдХреЛрдВ рдХреЛ AndroidManifest рдФрд░ рдХреЛрдб рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
intent.setFlags(Intent.FLAG_ACTIVITY_*);
рдПрдВрдбреНрд░реЙрдЗрдб: рд▓реЙрдиреНрдЪрдореЛрдб
рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЖрд╢рдп рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдПрдХреНрдЯрд┐рд╡рд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
"рдорд╛рдирдХ" рдФрд░ "рд╕рд┐рдВрдЧрд▓рдЯреЙрдк" (FLAG_ACTIVITY_SINGLE_TOP)
"standard"
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрд╢рд╛ рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдПрдХреНрдЯрд┐рд╡рд╛ рдХреЛ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЦреБрдж рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПред
("рдорд╛рдирдХ")
A-> A-> рдкреАрдЫреЗ-> рдкреАрдЫреЗ: *** *** INFO/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 28371 INFO/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=28410 uid=10060 gids={1028} DEBUG/ActivityA(28410): onCreate() DEBUG/ActivityA(28410): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +2s64ms *** ActivityA *** INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 28410 DEBUG/ActivityA(28410): onCreate() DEBUG/ActivityA(28410): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +739ms DEBUG/ActivityA(28410): onStop() *** back *** DEBUG/ActivityA(28410): onStart() DEBUG/ActivityA(28410): onStop() DEBUG/ActivityA(28410): onDestroy() *** back *** DEBUG/ActivityA(28410): onStop() DEBUG/ActivityA(28410): onDestroy() *** Home screen***
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ 2 рд╕рдорд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдереАрдВ рдФрд░ рдХреЗрд╡рд▓ рджреЛ рдмреИрдХ рдХреНрд▓рд┐рдХ рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЧрдИред
"singleTop"
рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
("рд╕рд┐рдВрдЧрд▓рдЯреЙрдк")
A-> A-> рдкреАрдЫреЗ: *** *** INFO/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 31016 INFO/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=31070 uid=10060 gids={1028} DEBUG/ActivityA(31070): onCreate() DEBUG/ActivityA(31070): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +1s296ms *** ActivityA *** INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 31070 DEBUG/ActivityA(31070): onNewIntent() *** back *** DEBUG/ActivityA(31070): onStop() DEBUG/ActivityA(31070): onDestroy() *** Home screen***
рдХреЛрдИ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп,
onNewIntent()
рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдерд╛ред рдкрд╣рд▓реА рдкреАрда рдкрд░ рд╣рдордиреЗ рдЖрд╡реЗрджрди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
"рд╕рд┐рдВрдЧрд▓рдЯреИрд╕реНрдХ" рдФрд░ "рд╕рд┐рдВрдЧрд▓ рдЗрдирд╕реНрдЯрд╛рдВрд╕"
"singleTask"
рдФрд░
"singleInstance"
рдПрдХ рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдХрд╛рдИ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рд╡реЗ рдХрд╛рд░реНрдп рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░рдиреЗ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
("рд╕рд┐рдВрдЧрд▓рдЯреИрд╕реНрдХ")
A-> B-> C-> A-> рдкреАрдЫреЗ: *** *** INFO/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 1496 INFO/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=1529 uid=10060 gids={1028} DEBUG/ActivityA(1529): onCreate() DEBUG/ActivityA(1529): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +1s769ms *** ActivityB *** INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 1529 DEBUG/ActivityB(1529): onCreate() DEBUG/ActivityB(1529): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +524ms DEBUG/ActivityA(1529): onStop() *** ActivityC *** INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 1529 DEBUG/ActivityC(1529): onCreate() DEBUG/ActivityC(1529): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +267ms DEBUG/ActivityB(1529): onStop() *** ActivityA *** DEBUG/ActivityB(1529): onDestroy() DEBUG/ActivityA(1529): onNewIntent() DEBUG/ActivityA(1529): onStart() DEBUG/ActivityC(1529): onStop() DEBUG/ActivityC(1529): onDestroy() *** back *** 11-13 00:08:00.039: DEBUG/ActivityA(1529): onStop() 11-13 00:08:00.039: DEBUG/ActivityA(1529): onDestroy() *** Home screen***
рдПрдХреНрдЯрд┐рд╡рд╛ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рд╕рд┐рд╕реНрдЯрдо рдиреЗ рд╕рднреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рдЗрд╕рдХреЗ рдКрдкрд░ рдереЗред рд╡рд╛рдкрд╕ рджрдмрд╛рдХрд░ рд╣рдореЗрдВ рд╣реЛрдо рд╕реНрдХреНрд░реАрди рдкрд░ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред
("рд╕рд┐рдВрдЧрд▓рд╕реНрдЯрд╛рдВрд╕")
рдП-> рдмреА-> рд╕реА-> рдП-> рдмреИрдХ-> рдмреИрдХ-> рдмреИрдХ: *** *** 11-13 00:12:27.132: INFO/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 2418 11-13 00:12:27.859: INFO/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=2438 uid=10060 gids={1028} 11-13 00:12:28.332: DEBUG/ActivityA(2438): onCreate() 11-13 00:12:28.457: DEBUG/ActivityA(2438): onStart() 11-13 00:12:29.254: INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +1s606ms *** ActivityB *** 11-13 00:12:32.195: INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 2438 11-13 00:12:32.679: DEBUG/ActivityB(2438): onCreate() 11-13 00:12:32.824: DEBUG/ActivityB(2438): onStart() 11-13 00:12:33.394: INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +897ms 11-13 00:12:33.547: DEBUG/ActivityA(2438): onStop() *** ActivityC *** 11-13 00:12:36.257: INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 2438 11-13 00:12:36.507: DEBUG/ActivityC(2438): onCreate() 11-13 00:12:36.582: DEBUG/ActivityC(2438): onStart() 11-13 00:12:37.343: INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +989ms 11-13 00:12:37.695: DEBUG/ActivityB(2438): onStop() *** ActivityA *** 11-13 00:12:38.660: INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 2438 11-13 00:12:38.734: DEBUG/ActivityA(2438): onNewIntent() 11-13 00:12:38.734: DEBUG/ActivityA(2438): onStart() 11-13 00:12:39.789: DEBUG/ActivityC(2438): onStop() *** back *** 11-13 00:12:41.425: DEBUG/ActivityC(2438): onStart() 11-13 00:12:42.250: DEBUG/ActivityA(2438): onStop() 11-13 00:12:42.250: DEBUG/ActivityA(2438): onDestroy() *** back *** 11-13 00:12:52.332: DEBUG/ActivityB(2438): onStart() 11-13 00:12:52.894: DEBUG/ActivityC(2438): onStop() 11-13 00:12:52.898: DEBUG/ActivityC(2438): onDestroy() *** back *** 11-13 00:12:55.617: DEBUG/ActivityB(2438): onStop() 11-13 00:12:55.617: DEBUG/ActivityB(2438): onDestroy() *** Home screen***
рдПрдХреНрдЯрд┐рд╡рд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдХрд┐рд╕реА рднреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдПрдХрд▓ рдПрдХреНрдЯрд┐рд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдЦреЛрд▓рд╛ рд╣реИред рдпрд╣ рдкреАрда рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣реЛрдо рд╕реНрдХреНрд░реАрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдФрд░ рдХреНрд▓рд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рдереЗ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рдЗрдХрд╛рдИ рдПрдХреНрдЯрд┐рд╡рд╛ рдКрдкрд░ рдирд╖реНрдЯ рд╣реЛ рдЧрдИ рдереА рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд╛рдкрд╕реА рдирд╣реАрдВ рд╣реБрдИ рдереАред рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ, рдПрдХреНрдЯрд┐рд╡рд┐рд╕реНрдЯ рд╕реЗ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрд╕реА рд╕реЗ рдПрдХреНрдЯрд┐рд╡рд╛ (рдпрд╛рдиреА, рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг) рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдЖрд╡реЗрджрди рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдореЛрдбрд╝рдирд╛ рдФрд░ рдПрдХ рдЪрд┐рдХрдиреА рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдП рд╕реЗ рдмрд╛рд╣рд░ рдХреВрджрдирд╛ред
Android: noHistory (FLAG_ACTIVITY_NO_HISTORY)
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди
false
ред рдЕрдЧрд░
true
, рддреЛ рдмрдВрдж рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдкреИрд░рд╛рдореАрдЯрд░
true
рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХреНрдЯрд┐рд╡рд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛
true
:
<activity android:name=".ActivityA" android:noHistory="true">
рдП-> рдмреА-> рдкреАрдЫреЗ: *** *** INFO/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 4875 INFO/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=4915 uid=10060 gids={1028} DEBUG/ActivityA(4915): onCreate() DEBUG/ActivityA(4915): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +1s383ms *** ActivityB *** INFO/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 4915 DEBUG/ActivityB(4915): onCreate() DEBUG/ActivityB(4915): onStart() INFO/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +877ms DEBUG/ActivityA(4915): onStop() *** back *** DEBUG/ActivityA(4915): onDestroy() DEBUG/ActivityB(4915): onStop() DEBUG/ActivityB(4915): onDestroy() *** Home screen***
onDestroy()
рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП,
onDestroy()
рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рдпрд╛рдж рдореЗрдВ рдмрдирд╛ рд░рд╣рд╛ред
onStop()
, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд▓реЛрдЧреЛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрднреА рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреА рд╣реИред
Android: ClearTaskOnLaunch рдФрд░ Android: finishOnTaskLaunch
clearTaskOnLaunch
рдкреИрд░рд╛рдореАрдЯрд░
clearTaskOnLaunch
рдпрджрд┐
true
рддреЛ рд╕рд┐рд╕реНрдЯрдо рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреИрдХ (рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдкрд░) рдкрд░ рд╕рднреА рдЧреИрд░-рд░реВрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ
clearTaskOnLaunch
рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдореВрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬрд┐рд╕рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛:
<activity android:name=".ActivityA" android:clearTaskOnLaunch="true">
рдРрдк рд╢реБрд░реВ-> A-> B-> C-> рд╣реЛрдо-> рдРрдк рд╢реБрд░реВ: *** *** INFO/ActivityManager(250): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 476 DEBUG/ActivityA(3412): onCreate() DEBUG/ActivityA(3412): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +295ms *** ActivityB *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 3412 DEBUG/ActivityB(3412): onCreate() DEBUG/ActivityB(3412): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +140ms DEBUG/ActivityA(3412): onStop() *** ActivityC *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 3412 DEBUG/ActivityC(3412): onCreate() DEBUG/ActivityC(3412): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +131ms DEBUG/ActivityB(3412): onStop() *** Home *** INFO/ActivityManager(250): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher u=0} from pid 250 DEBUG/ActivityC(3412): onStop() *** *** INFO/ActivityManager(250): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 476 DEBUG/ActivityC(3412): onDestroy() DEBUG/ActivityB(3412): onDestroy() DEBUG/ActivityA(3412): onStart()
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдиреЗ рдореЗрдореЛрд░реА рд╕реЗ рдЪрд╛рдЗрд▓реНрдб рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред рд╣рдорд╛рд░рд╛ рдпрд╣ рднреА рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд┐рдХреЗрдЯреНрд╕ рдореЗрдиреВ (рд╣реЛрдо рдмрдЯрди рдкрд░ рд▓рдВрдмреЗ рдЯреИрдк) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡реЗрджрди рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдПрдХ рдЗрдВрдЯреЗрдВрдЯ рд▓реЙрдВрдЪрд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╕реА рдкрд░ рд╡рд╛рдкрд╕реА рд╣реЛрдЧреАред
рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░
finishTaskOnLaunch
рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐
finishTaskOnLaunch
рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЬрдм рдЖрдк рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди
true
рд╣реИ, рддреЛ Android рдЙрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рд╣реА рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрд╕реА рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
<activity android:name=".ActivityB" android:finishOnTaskLaunch="true"/> <activity android:name=".ActivityC" android:finishOnTaskLaunch="true"/>
рджреЛрдиреЛрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
false
рд╣реИрдВред
рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдмрд╛рд╣рд░ рдХрд┐рдП рдЧрдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдирд╛ рдЬреЛ рдХрд┐
excludeFromRecents
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╣реИ (
excludeFromRecents
рдореЗрдиреВ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐, рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рд░рд▓ рдорд╛рдорд▓реЗ рд╣реИрдВред
Android: parentActivityName
рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЬрдирдХ рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреБрдЫ рдЪреЗрддрд╛рд╡рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕реА рдмреИрдХ рдмрдЯрди рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЕрдк (http://developer.android.com/training/implementing-navigation/ancestral.html) рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╢рди рдмрд╛рд░'рдИ рдореЗрдВред ред рд▓реЗрдХрд┐рди рд╣рдо рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЬрдирдХ рдмрдирд╛рдПрдБ:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
@Override public void onBackPressed() { onNavigateUp(); }
<activity android:name=".ActivityC" android:parentActivityName=".ActivityA"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ActivityA" /> </activity>
A-> B-> C-> рдкреАрдЫреЗ: *** *** INFO/ActivityManager(250): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 6620 INFO/ActivityManager(250): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=6634 uid=10060 gids={1028} DEBUG/ActivityA(6634): onCreate() DEBUG/ActivityA(6634): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +895ms *** ActivityB *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 6634 DEBUG/ActivityB(6634): onCreate() DEBUG/ActivityB(6634): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +179ms DEBUG/ActivityA(6634): onStop() *** ActivityC *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 6634 DEBUG/ActivityC(6634): onCreate() DEBUG/ActivityC(6634): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +144ms DEBUG/ActivityB(6634): onStop() *** back *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 6634 DEBUG/ActivityB(6634): onDestroy() DEBUG/ActivityA(6634): onDestroy() DEBUG/ActivityA(6634): onCreate() DEBUG/ActivityA(6634): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +182ms DEBUG/ActivityC(6634): onStop() DEBUG/ActivityC(6634): onDestroy()
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдЙрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХред рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╣реА рдирд╣реАрдВ рдерд╛, рдЬреЛ рдирд╖реНрдЯ рд╣реЛ рдЧрдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдКрдкрд░ рдЦрдбрд╝реЗ рдереЗ, рдлрд┐рд░ рд╡рд╣ рдЦреБрдж рднреА рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдХ рдмрдЯрди рдкрд░ рдХрдИ рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд┐рдирд╛ рдмрдЪреНрдЪреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рднрдЯрдХрдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ (рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдмрд╛рд░ рдХреЗ рд╕рд╛рде, рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ)ред
Android: allowTaskReparenting рдФрд░ Android: taskAffinity
allowTaskReparenting
рдкреИрд░рд╛рдореАрдЯрд░
allowTaskReparenting
рдХрд╛рд░реНрдп # 1 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ # 1 (рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ) рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рддреИрдпрд╛рд░реА:
<activity android:name=".ActivityA" android:launchMode="singleInstance" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".ActivityB" android:launchMode="singleTask" /> <activity android:name=".ActivityC" android:launchMode="singleTask" android:allowTaskReparenting="true" android:taskAffinity=".ActivityA" />
рдПрдХреНрдЯрд┐рд╡рд╛ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдФрд░ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред
рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдордиреЗ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЕрдЧрд░
android:launchMode="singleInstance"
рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
android:launchMode="singleInstance"
рдХрд╛рд░рдг рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рд╣реИ
android:launchMode="singleInstance"
ред
рдРрдк рд╕реНрдЯрд╛рд░реНрдЯ-> рдП-> рдмреА-> рд╕реА-> рд╣реЛрдо-> рдРрдк рд╕реНрдЯрд╛рд░реНрдЯ-> рдП-> рд╕реА-> рдмреИрдХ: *** *** INFO/ActivityManager(250): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 10495 INFO/ActivityManager(250): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=10524 uid=10060 gids={1028} DEBUG/ActivityA(10524): onCreate() DEBUG/ActivityA(10524): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +761ms *** ActivityB *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 10524 DEBUG/ActivityB(10524): onCreate() DEBUG/ActivityB(10524): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +225ms DEBUG/ActivityA(10524): onStop() *** ActivityC *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 10524 DEBUG/ActivityC(10524): onCreate() DEBUG/ActivityC(10524): onStart() INFO/ActivityManager(250): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +204ms DEBUG/ActivityB(10524): onStop() *** Home*** INFO/ActivityManager(250): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher u=0} from pid 250 DEBUG/ActivityC(10524): onStop() *** *** INFO/ActivityManager(250): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 476 DEBUG/ActivityA(10524): onNewIntent() DEBUG/ActivityA(10524): onStart() *** ActivityC *** INFO/ActivityManager(250): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 10524 DEBUG/ActivityC(10524): onNewIntent() DEBUG/ActivityC(10524): onStart() DEBUG/ActivityA(10524): onStop() *** back *** DEBUG/ActivityA(10524): onStart() DEBUG/ActivityC(10524): onStop() DEBUG/ActivityC(10524): onDestroy()
рд╣реЛрдо рджрдмрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЗрдХрд╛рдЗрдпрд╛рдВ рдереАрдВ: рдЯрд╛рд╕реНрдХ 1 [рдП], рдЯрд╛рд╕реНрдХ 2 [рдмреА, рд╕реА]ред рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХреНрдЯрд┐рд╡рд╛ рд╕реЗ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ рдмрджрд▓ рдЧрдП, рдЕрд░реНрдерд╛рддреНред рдЯрд╛рд╕реНрдХ 2 рдореЗрдВ, рдЬреЛ рдЖрдЧреЗ, рдЕрдЧрд░ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛
allowTaskReparenting
рдФрд░
taskAffinity
, рдПрдХ рдЕрд▓рдЧ рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд╛рдкрд╕ рджрдмрд╛рдХрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЬрдбрд╝
taskAffinity
рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмреИрдХ рдмрдЯрди рд╣рдореЗрдВ рдЯрд╛рд╕реНрдХ 1 рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реЗ рдЖрдпрд╛ред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрджрд░ рдРрд╕реА рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╢рд╛рдпрдж рд╣реА рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рд╕реНрдХ 1 рдФрд░ рдЯрд╛рд╕реНрдХ 2 рдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓рдШреБ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░, рд╡рд╛рдкрд╕ рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
Android: alwaysRetainTaskState
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреЛ рдХреБрдЫ рд╕рдордп ("рдЬреИрд╕реЗ 30 рдорд┐рдирдЯ" ┬й рдбреЗрд╡рд▓рдкрд░.android.com) рдХреЗ рдмрд╛рдж рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░
alwaysRetainTaskState
рд╕реЗрдЯ рдХрд░реЗрдВ (рд╕реНрдореГрддрд┐ рд╕реЗ рдмрд╛рд╣рд░
alwaysRetainTaskState
рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
true
ред рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдкрдХрдбрд╝ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ : рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрднреА рднреА рдПрдХ рдкрдХрдбрд╝ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП
a8989 ред рдПрдВрдбреНрд░реЙрдЗрдб 4.0 (рдПрдкреАрдЖрдИ рд╕реНрддрд░ 14) рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╖реНрдЯ рд╣реЛ рдЧрдИ рдФрд░ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдмреЗрдХрд╛рд░ рд╣реЛ рдЧрдпрд╛ред 2.3.7 рдФрд░ 4.0.1 рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░
рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ (
ACTIVITY_INACTIVE_RESET_TIME
рдлрд╝реАрд▓реНрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб рдЯреНрд░реИрдХрд░ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП
рдПрдХ рдмрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдирдИ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдФрд░ рдорд╛рд▓рд┐рдХ рдХреЗ рдмрд┐рдирд╛ рд╣реИред
рдЧрддрд┐рд╡рд┐рдзрд┐ рдвреЗрд░ рдЬреАрд╡рди рдЪрдХреНрд░ (рднрд╛рдЧ 1)