рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: "рд╣рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред" рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдмреНрд▓реЙрдЧ рдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдЙрдореНрдореАрджрд╡рд╛рд░ рддреБрд░рдВрдд рдПрдХ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╕рдордЭрд╛рддрд╛ рд╣реИред рдПрдХ рд╢реВрдиреНрдп рдореЗрдВ рдЧреЛрд▓рд╛рдХрд╛рд░ рдЬреАрд╡рди рдЪрдХреНрд░, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдмрдХ рд▓рд╛рдЬрд┐рдореА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╕рд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕ рдЗрдХрд╛рдИ рдХреЛ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╕реНрдЯреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рдЕрдм рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рдЧрддрд┐рд╡рд┐рдзрд┐ рдвреЗрд░ рдЬреАрд╡рди рдЪрдХреНрд░ (рднрд╛рдЧ 2)рд╡рд╣рд╛рдБ рд╣реИ:
рдПрдХреНрдЯрд┐рд╡рд╛, рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА, рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА
<activity android:name=".ActivityA"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".ActivityB" /> <activity android:name=".ActivityC" />
рдЙрдирдХреА рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдПрдХ рдмрдЯрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдЧрд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╢реБрд░реВрдЖрдд рдХрд░рддрд╛ рд╣реИ:
Intent intent = new Intent(view.getContext(), ActivityB.class); startActivity(intent);
рдпрд╣реА рд╣реИ, рдПрдХреНрдЯрд┐рд╡рд╛ рдПрдХреНрдЯреАрдмреА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдмреА рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рд╕реА рдлрд┐рд░ рд╕реЗ рдПрдХреНрдЯрд┐рд╡рд┐рдП рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрдЯреИрдХ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдирд┐рдпрдо "рдЕрдВрддрд┐рдо рдмрд╛рд░, рдкрд╣рд▓реЗ рдЬрд╛рдУ" рдЙрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреИрдХ рдмрдЯрди
onDestroy()
, рд╡рд░реНрддрдорд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ (
onDestroy()
), рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
onStart()
рдФрд░ / рдпрд╛
onStart()
) рдпрджрд┐ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдЯ рдирд╣реАрдВ рдерд╛ред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧ
A-> B-> C-> рдмреИрдХ-> рдмреИрдХ-> рдмреИрдХ: *** *** I/ActivityManager(249): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 8672 D/ActivityA(28229): onCreate() D/ActivityA(28229): onStart() I/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityA: +234ms *** ActivityB *** I/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityB u=0} from pid 28229 D/ActivityB(28229): onCreate() D/ActivityB(28229): onStart() I/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityB: +135ms D/ActivityA(28229): onStop() *** ActivityC *** I/ActivityManager(249): START {cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityC u=0} from pid 28229 D/ActivityC(28229): onCreate() D/ActivityC(28229): onStart() I/ActivityManager(249): Displayed com.habrahabr.ActivityStackLifeCycle/.ActivityC: +206ms D/ActivityB(28229): onStop() *** Back *** D/ActivityB(28229): onStart() D/ActivityC(28229): onStop() D/ActivityC(28229): onDestroy() *** Back *** D/ActivityA(28229): onStart() D/ActivityB(28229): onStop() D/ActivityB(28229): onDestroy() *** Back *** D/ActivityA(28229): onStop() D/ActivityA(28229): onDestroy()
рд╣рд░ рдХреЛрдИ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрдЯреИрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ рдЕрдЧрд░ рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЖрд╡реЗрджрди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрди-рдЦрдкрдд рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ?
App1-> A-> B-> C-> рд╣реЛрдо-> App2-> рдмреИрдХ-> App1: *** *** I/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 1195 I/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=1267 uid=10060 gids={1028} D/ActivityA(1267): onCreate() D/ActivityA(1267): onStart() *** Home, - , , , *** <...> I/ActivityManager(249): Process com.habrahabr.ActivityStackLifeCycle (pid 1267) has died. <...> *** , *** I/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityC: pid=1879 uid=10060 gids={1028} D/ActivityC(1879): onCreate() D/ActivityC(1879): onStart()
рд╣рдо рдЙрд╕ рд▓реЙрдЧ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (
id=1267
) рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рдПрдХ рдирдпрд╛ (
id=1879
) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ рдФрд░ рдЕрдВрддрд┐рдо рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдЦреЛрд▓ рджрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЙрд╕ рд╕рдордп рдкрд░ рдереЗ рдЬрдм рд╣рдордиреЗ рдЖрд╡реЗрджрди рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред
рд╣рдо рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдХрд░реЗрдВрдЧреЗ, рдмрд╕ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдлреЛрд░реНрд╕ рд╕реНрдЯреЙрдк рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реЗрдВред
App1-> A-> B-> C-> рд╣реЛрдо-> рдРрдк рдореИрдиреЗрдЬрд░-> рдлреЛрд░реНрд╕ рд╕реНрдЯреЙрдк-> App1 *** *** I/ActivityManager(249): START {flg=0x10000000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 32050 I/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=32090 uid=10060 gids={1028} D/ActivityA(32090): onCreate() D/ActivityA(32090): onStart() <...> *** Home, Application Manager, Force Stop *** I/ActivityManager(249): Force stopping package com.habrahabr.ActivityStackLifeCycle uid=10060 I/ActivityManager(249): Killing proc 32090:com.habrahabr.ActivityStackLifeCycle/u0a60: force stop I/ActivityManager(249): Force finishing activity ActivityRecord{419ba4b0 com.habrahabr.ActivityStackLifeCycle/.ActivityA} I/ActivityManager(249): Force finishing activity ActivityRecord{41c392b8 com.habrahabr.ActivityStackLifeCycle/.ActivityB} I/ActivityManager(249): Force finishing activity ActivityRecord{41ac4588 com.habrahabr.ActivityStackLifeCycle/.ActivityC} <...> *** Application Manager, *** I/ActivityManager(249): START {flg=0x10104000 cmp=com.habrahabr.ActivityStackLifeCycle/.ActivityA u=0} from pid 337 I/ActivityManager(249): Start proc com.habrahabr.ActivityStackLifeCycle for activity com.habrahabr.ActivityStackLifeCycle/.ActivityA: pid=32378 uid=10060 gids={1028} D/ActivityA(32378): onCreate() D/ActivityA(32378): onStart()
рд╣рдо рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ: рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрдЯреИрдХ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдмрд▓ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЦреБрдж рдХреЛ рд░реВрдЯ рдПрдХреНрдЯрд┐рд╡рд╛ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВред
рд╣рдо рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╖реНрдЯ рд╣реЛ рдЧрдИ рдереА, рддреЛ рдХрд┐рд╕реА рднреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ
onDestroy()
рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рд╣рдордиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдЙрдкрдХрд░рдг рд╣реИрдВред рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
PS рдиреЗ
рд╡реЗрд╕реНрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред