안드로이드App개발 09.task

Click here to load reader

download 안드로이드App개발 09.task

of 73

description

 

Transcript of 안드로이드App개발 09.task

  • 1. App 9. Activity Task2013.04CopyRight http://cafe.daum.net/superdroid

2. 1. Activity Task ?Task Activity Stack . "PackageA_1 -> PackageA_2 -> PackageA_3" , UI . Framework . 3. 1. Activity Task ?"PackageA_3" Activity Activity,"PackageA_3" "PackageA_2" ."PackageA_3" "PackageA_1" . Stack . Task . 4. 1. Activity Task ?>> adb shell dumpsys activity Activity Stack 5. 1. Activity Task ? 6. 1. Activity Task ? 7. 1. Activity Task ?Task . TaskTask Group 1 .Top Activity Task Stack Activity, Stack Activity.Base Activity TaskStack Activity. Root Activity. 8. 1. Activity Task ? Components ? 9. 1. Activity Task ? Component Task . 10. 1. Activity Task ?Task . . . 11. 1. Activity Task ?Question) Task ?A) Back Key() "PackageA_3 -> PackageA_2 ->PackageA_1 -> Launcher" Task . Stack .Question) Task ?Launcher Task .???? 12. 2. Task AndroidManifest.xml . 13. Intent FlagFLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSIONFLAG_FROM_BACKGROUNDFLAG_DEBUG_LOG_RESOLUTIONFLAG_ACTIVITY_NO_HISTORYFLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_NEW_TASKFLAG_ACITIVTY_MULTIPLE_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_FORWARD_RESULTFLAG_ACTIVITY_PREVIOUS_IS_TOPFLAG_ACITIVITY_EXCLUDE_FROM_RECENTSFLAG_ACTIVITY_BROUGHT_TO_FRONTFLAG_ACTIVITY_RESET_TASK_IF_NEEDEDFLAG_ACTIVITY_LAUNCHED_FROM_HISTORYFLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETFLAG_ACTIVITY_NO_USER_ACTIONFLAG_ACTIVITY_REORDER_FRONTFLAG_ACTIVITY_NO_ANIMATIONFLAG_RECEIVER_REGISTERED_ONLYFLAG_RECEIVER_REPLACE_PENDINGFLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOTFLAG_RECEIVER_BOOT_UPGRADEIMMUTABLE_FLAGS2. Task Intent Flag . . 14. 2. Task 2.1. Task FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_NEW_TASKFLAG_ACITIVTY_MULTIPLE_TASK2.1.1. FLAG_ACTIVITY_NEW_TASK 15. 2.1.1. FLAG_ACTIVITY_NEW_TASK 16. 2.1.1. FLAG_ACTIVITY_NEW_TASK 17. 2.1.1. FLAG_ACTIVITY_NEW_TASK taskAffinity .!! 18. 2.1.2. askAffinity . taskAffinity . ."adb shell dumpsys activity" Hist 1,2,3 taskAffinity=com.test.PackageAHist 4taskAffinity=com.test.PackageB "taskAffinity" , "taskAffinity" ."FLAG_ACTIVITY_NEW_TASK" Flag Activity taskAffinity "taskAffinity" Task Task . 19. 2.1.2. Task1 Task taskAffinity Activity,Task1 taskAffinity Root ActivitytaskAffinity Task taskAffinity . Task Root ActivityTask taskAffinity . 20. 2.1.2. Activity . Activity IntentFlag "FLAG_ACTIVITY_NEW_TASK". Activity taskAffinity "com.test.PackageC". Task ? 21. 2.1.2. Task3 . Task3 taskAffinity "com.test.PackageC" Activity taskAffinity "com.test.PackageC" . ? 22. 2.1.2. Task ? 23. 2.1.2. Home Key " " 4 . ? 24. 2.1.2. Task Task ? . 25. 2.1.3. FLAG_ACTIVITY_MULTIPLE_TASK Flag, . "FLAG_ACTIVITY_NEW_TASK" ."FLAG_ACTIVITY_NEW_TASK" Flag taskAffinity Task Task Task Top . taskAffinity Task Task ? "FLAG_ACTIVITY_NEW_TASK" ! ! ! Task Root Activity . 26. 2.1.3. FLAG_ACTIVITY_MULTIPLE_TASKtaskAffinity AndroidManifest.xml 27. 2.1.3. FLAG_ACTIVITY_MULTIPLE_TASK 28. 2.1.3. FLAG_ACTIVITY_MULTIPLE_TASK 29. 2.1.3. FLAG_ACTIVITY_MULTIPLE_TASKtaskAffinity "com.test.PackageA" Task . .( .) 30. 2.1.4. 4 .- standard- singleTop- singleTask- singleInstance 31. 2.1.4.1 standard Task Task .Default ."FLAG_ACTIVITY_NEW_TASK" "FLAG_ACTIVITY_MULTIPLE_TASK" Task . AndroidManifest.xml "standard" ? "standard" Task Task . ?Task . AndroidManifest.xml Intent Flag. AndroidManifest.xml Intent Flag . 32. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP) Activity Task Top Activity , Activity Top Top .( Instance Instance .) .A Activity B Activity B Activity Activity . 33. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP) B Activity Instance . . 34. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP)B Activity AndroidManifest.xml "android:launchMode="singleTop" 35. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP)B Activity B Activity Instance . 36. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP) ? 37. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP) 38. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP) , B ., B Activity ?B onPause -> onResume . Activity Instance , B Instance onPause -> onResume . Instance . . 39. 2.1.4.2 singleTop ( == Intent Flag FLAG_ACTIVITY_SINGLE_TOP)!!! Intent Flag "FLAG_ACTIVITY_SINGLE_TOP" . AndroidManifest.xml launchMode="singleTop" startActivity() Intent Flag"FLAG_ACTIVITY_SINGLE_TOP" . 40. 2.1.4.3 singleTask "singelTask" AndroidManifest.xml Activity Task . Activity Task Root . .. . 41. 2.1.4.3 singleTask Activity Stack .A :Intent intent = new Intent(this, B.class);startActivity(intent);B :Intent intent = new Intent(this, C.class);startActivity(intent);C :Intent intent = new Intent(this, D.class);startActivity(intent); 42. 2.1.4.3 singleTask Android Manifest.xml launchMode="singleTask"C Activity . 43. 2.1.4.3 singleTask C Activity Task . Activity Stack .!!! C Activity Task , . 44. 2.1.4.3 singleTask ? "FLAG_ACTIVITY_NEW_TASK" . .. taskAffinity Task . 45. 2.1.4.3 singleTask "FLAG_ACTIVITY_NEW_TASK" tastAffinity . . taskAffinity . C Activity taskAffinity . 46. 2.1.4.3 singleTask . taskAffinity . 47. 2.1.4.3 singleTask 1 .2 A singleTask .3,4 A -> B -> C Activity Stack 5 ,ActivityStack A -> B -> C Top Activity C A . 48. 2.1.4.3 singleTask singleTask .SingleTask Task Background Foreground ,SingleTask Activity(Root Activity) . 49. 2.1.4.3 singleTask B,C A . A . A Front A Intent Flag ."FLAG_ACTIVITY_BROUGHT_TO_FRONT" Flag . Flag Flag ActivitySingleTask . Activity Flag Activity . 50. 2.1.4.4 singleInstance singleTask Task . taskAffinity Task . Task "singleInstance" Activity . Activity Activity , Task "singleInstance" Activity. ( Root Activity Top Activity.) "singleTop" . Task Activity , Activity Task Activity , Task Activity , Activity Activity . 51. 2.1.4.4 singleInstance "singleInstance" C Activity 52. 2.1.4.4 singleInstance - "singleInstance" Activity Task .C Activity Task2 .- taskAffinity TaskC Activity .singleInstance taskAffinity Task Activity .- "singleInstance" Task Activity(Instance) . D Activity Task2C Activity .D Activity Task FlagAndroidManifest.xml taskAffinity Task . 53. 2.1.4.4 singleInstance 54. 2.1.4.4 singleInstance "singleInstance" "singleTop" . 55. 2.1.4.4 singleInstance "singleInstance" "singleTop" .B Activity "singleInstance" ,B Activity Task . A -> B -> B -> B ... B Activity . Task .!!! 56. 2.1.4.4 singleInstance "singleInstance" "singleTop" .B Activity B Activity . onPause -> onResume ~~ 57. !!! "singleTask"taskAffinity Activity Stack ,"single Top""singleInstance" . 58. 2.2. Task Activity Intent FlagFLAG_ACTIVITY_NO_HISTORYFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_REORDER_TO_FRONTFLAG_ACTIVITY_RESET_TASK_IF_NEEDEDFLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETFLAG_ACTIVITY_BROUGHT_TO_FRONT AndroidManifest.xml Intent Flag 59. 2.2. Task Activity 2.2.1. FLAG_ACTIVITY_NO_HISTORY(== AndroidManifest.xml ) Activity Stack History . Activity Backkey . Password Activity application . . A->B->C . 60. 2.2. Task Activity 2.2.1. FLAG_ACTIVITY_NO_HISTORY(== AndroidManifest.xml ) 61. 2.2. Task Activity 2.2.1. FLAG_ACTIVITY_NO_HISTORY(== AndroidManifest.xml ) B Activity .1,2 B Activity "FINISHING" . B Activity . .C Activity BackKey B Activity A Activity .( . B -> C , B Activity finish() finish . noHistory B Foreground Background Finish .) 62. 2.2. Task Activity 2.2.1. FLAG_ACTIVITY_NO_HISTORY(== AndroidManifest.xml )android:noHistory=true . 63. 2.2. Task Activity 2.2.2. FLAG_ACTIVITY_CLEAR_TOP Task Activity Top Activity Activity Top . Task "B","B "FLAG_ACTIVITY_CLEAR_TOP"Intent Flag 1,2,3 D,C,B Activity , "B" Top . 64. 2.2. Task Activity 2.2.2. FLAG_ACTIVITY_CLEAR_TOPC->B "FLAG_ACTIVITY_CLEAR_TOP" 65. 2.2. Task Activity 2.2.2. FLAG_ACTIVITY_CLEAR_TOP "B" Activity"FLAG_ACTIVITY_CLEAR_TOP"Intent ,"B" "C" onDestroy "B" onCreate .( onDestroy TaskPop .) 66. 2.2. Task Activity 2.2.2. FLAG_ACTIVITY_CLEAR_TOP Flag ? . 67. 2.2. Task Activity 2.2.3. FLAG_ACTIVITY_REORDER_TO_FRONT Flag Task Activity Top . . Task "B" Activity , "B" Activity Stack Top . "B" Activity . Flag . Stack . . 68. 2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET .2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED"FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" intent Activity Taskbackgroundforeground ,"FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" intent Task . 69. 1 "FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" Intent Activity stack 2 Activity Stack . Flag Stack Activity Stack .(Stack Activity Destroy .) . 1. Task Background Foreground 2. Foreground ActivityIntent "FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" .3,4,5 .6 Activity .2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 70. 2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED3 4 Activity "FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" 5 home key background .7 D Activity foreground .D Activity FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDFLAG_ACTIVITY_NEW_TASK . . 71. 2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,D ? 72. 2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED3 D 4 C . "FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" B . 73. 2.2. Task Activity 2.2.4. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET2.2.5. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED Task "FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" ? Launcher . ResetTaskTest "D" Activity .ResetTaskTest .Launcher App . App Activity"FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" . Task .