CINXE.COM

<!doctype html><html lang="en"><head><title data-rh="true">Dominating the Overview Screen. (Using Concurrent Documents to Make… | by Joanna Smith | Google Developers | Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2016-05-12T21:16:05.290Z"/><meta data-rh="true" name="title" content="Dominating the Overview Screen. (Using Concurrent Documents to Make… | by Joanna Smith | Google Developers | Medium"/><meta data-rh="true" property="og:title" content="Dominating the Overview Screen"/><meta data-rh="true" property="al:android:url" content="medium://p/eef18d2195d"/><meta data-rh="true" property="al:ios:url" content="medium://p/eef18d2195d"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="Nearly everyone is familiar with the “recents menu” (technically called the Overview screen). Probably because it has a guaranteed button dedicated to letting users switch context with ease. But some…"/><meta data-rh="true" property="og:description" content="(Using Concurrent Documents to Make Users Love You)"/><meta data-rh="true" property="og:url" content="https://medium.com/google-developers/dominating-the-overview-screen-eef18d2195d"/><meta data-rh="true" property="al:web:url" content="https://medium.com/google-developers/dominating-the-overview-screen-eef18d2195d"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:281/1*7cG0Y02Cl2CHIHDTT6BvFw.png"/><meta data-rh="true" property="article:author" content="https://medium.com/@dontmesswithjo"/><meta data-rh="true" name="author" content="Joanna Smith"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Dominating the Overview Screen"/><meta data-rh="true" name="twitter:site" content="@googledevs"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/eef18d2195d"/><meta data-rh="true" property="twitter:description" content="(Using Concurrent Documents to Make Users Love You)"/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:281/1*7cG0Y02Cl2CHIHDTT6BvFw.png"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:creator" content="@dontmesswithjo"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="6 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" rel="preconnect" href="https://glyph.medium.com" crossOrigin=""/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@dontmesswithjo"/><link data-rh="true" rel="canonical" href="https://medium.com/google-developers/dominating-the-overview-screen-eef18d2195d"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/eef18d2195d"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F1*7cG0Y02Cl2CHIHDTT6BvFw.png"],"url":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers\u002Fdominating-the-overview-screen-eef18d2195d","dateCreated":"2016-05-12T18:07:12.617Z","datePublished":"2016-05-12T18:07:12.617Z","dateModified":"2018-06-20T13:12:36.358Z","headline":"Dominating the Overview Screen - Google Developers - Medium","name":"Dominating the Overview Screen - Google Developers - Medium","description":"Nearly everyone is familiar with the “recents menu” (technically called the Overview screen). Probably because it has a guaranteed button dedicated to letting users switch context with ease. But some…","identifier":"eef18d2195d","author":{"@type":"Person","name":"Joanna Smith","url":"https:\u002F\u002Fmedium.com\u002F@dontmesswithjo"},"creator":["Joanna Smith"],"publisher":{"@type":"Organization","name":"Google Developers","url":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers","logo":{"@type":"ImageObject","width":60,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:120\u002F1*Zkhl4Zz43z2_iR_ADlP-rg.png"}},"mainEntityOfPage":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers\u002Fdominating-the-overview-screen-eef18d2195d"}</script><style type="text/css" data-fela-rehydration="550" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="550" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(26, 137, 23, 1)}.es{border-color:rgba(26, 137, 23, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(26, 137, 23, 1)}.ez:disabled:hover{border-color:rgba(26, 137, 23, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gx{align-items:baseline}.gy{width:48px}.gz{height:48px}.ha{border:2px solid rgba(255, 255, 255, 1)}.hb{z-index:0}.hc{box-shadow:none}.hd{border:1px solid rgba(0, 0, 0, 0.05)}.he{margin-left:-12px}.hf{width:28px}.hg{height:28px}.hh{z-index:1}.hi{width:24px}.hj{margin-bottom:2px}.hk{flex-wrap:nowrap}.hl{font-size:16px}.hm{line-height:24px}.ho{margin:0 8px}.hp{display:inline}.hq{color:rgba(26, 137, 23, 1)}.hr{fill:rgba(26, 137, 23, 1)}.hu{flex:0 0 auto}.hx{flex-wrap:wrap}.hy{white-space:pre-wrap}.hz{margin-right:4px}.ia{overflow:hidden}.ib{max-height:20px}.ic{text-overflow:ellipsis}.id{display:-webkit-box}.ie{-webkit-line-clamp:1}.if{-webkit-box-orient:vertical}.ig{word-break:break-all}.ii{padding-left:8px}.ij{padding-right:8px}.jk> *{flex-shrink:0}.jl{overflow-x:scroll}.jm::-webkit-scrollbar{display:none}.jn{scrollbar-width:none}.jo{-ms-overflow-style:none}.jp{width:74px}.jq{flex-direction:row}.jr{z-index:2}.ju{-webkit-user-select:none}.jv{border:0}.jw{fill:rgba(117, 117, 117, 1)}.jz{outline:0}.ka{user-select:none}.kb> svg{pointer-events:none}.kk{cursor:progress}.kl{margin-left:4px}.km{margin-top:0px}.kn{opacity:1}.ko{padding:4px 0}.kr{width:16px}.kt{display:inline-flex}.kz{max-width:100%}.la{padding:8px 2px}.lb svg{color:#6B6B6B}.ls{word-break:break-word}.lt{word-wrap:break-word}.lu:after{display:block}.lv:after{content:""}.lw:after{clear:both}.lx{line-height:1.58}.ly{letter-spacing:-0.004em}.lz{font-style:normal}.ma{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.mv{margin-bottom:-0.46em}.mw{font-weight:700}.mx{margin-left:auto}.my{margin-right:auto}.mz{max-width:281px}.nf{clear:both}.ng{height:auto}.nh{text-decoration:underline}.ni{background:none}.nj{margin:auto}.nk{padding-bottom:56.206088992974244%}.nl{height:0}.nm{line-height:1.12}.nn{letter-spacing:-0.022em}.no{font-weight:600}.oj{margin-bottom:-0.28em}.op{font-style:italic}.oq{max-width:806px}.os{cursor:zoom-in}.ot{z-index:auto}.ov{line-height:1.18}.pj{margin-bottom:-0.31em}.pk{list-style-type:disc}.pl{margin-left:30px}.pm{padding-left:0px}.ps{box-shadow:inset 3px 0 0 0 #242424}.pt{padding-left:23px}.pu{margin-left:-20px}.pv{overflow-x:auto}.pw{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.px{padding:20px}.py{border-radius:0}.pz{background:#F2F2F2}.qa{margin-top:-0.09em}.qb{margin-bottom:-0.09em}.qc{min-width:fit-content}.qd{max-width:2334px}.qe{margin-bottom:26px}.qf{margin-top:6px}.qg{margin-top:8px}.qh{margin-right:8px}.qi{padding:8px 16px}.qj{border-radius:100px}.qk{transition:background 300ms ease}.qm{white-space:nowrap}.qn{border-top:none}.qo{margin-bottom:50px}.qp{height:52px}.qq{max-height:52px}.qr{box-sizing:content-box}.qs{position:static}.qu{max-width:155px}.ra{margin-right:20px}.rb{margin-bottom:64px}.rc{margin-bottom:48px}.rq{border-radius:2px}.rs{height:64px}.rt{width:64px}.ru{align-self:flex-end}.rv{flex:1 1 auto}.sb{padding-right:4px}.sc{font-weight:500}.sj{margin-top:16px}.sk{color:rgba(255, 255, 255, 1)}.sl{fill:rgba(255, 255, 255, 1)}.sm{background:rgba(25, 25, 25, 1)}.sn{border-color:rgba(25, 25, 25, 1)}.sq:disabled{opacity:0.1}.sr:disabled:hover{background:rgba(25, 25, 25, 1)}.ss:disabled:hover{border-color:rgba(25, 25, 25, 1)}.sy{height:0px}.sz{gap:18px}.ta{fill:rgba(61, 61, 61, 1)}.tc{padding-bottom:6px}.td{border-bottom:1px solid #F2F2F2}.tj{margin-top:32px}.tk{fill:#242424}.tl{background:0}.tm{border-color:#242424}.tn:disabled:hover{color:#242424}.to:disabled:hover{fill:#242424}.tp:disabled:hover{border-color:#242424}.ua{border-bottom:solid 1px #E5E5E5}.ub{margin-top:72px}.uc{padding:24px 0}.ud{margin-bottom:0px}.ue{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(15, 115, 12, 1)}.eu:hover{border-color:rgba(15, 115, 12, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.hn:hover{text-decoration:underline}.hs:hover:not(:disabled){color:rgba(15, 115, 12, 1)}.ht:hover:not(:disabled){fill:rgba(15, 115, 12, 1)}.jy:hover{fill:rgba(8, 8, 8, 1)}.kp:hover{fill:#000000}.kq:hover p{color:#000000}.ks:hover{color:#000000}.lc:hover svg{color:#000000}.ql:hover{background-color:#F2F2F2}.rr:hover{background-color:none}.so:hover{background:#000000}.sp:hover{border-color:#242424}.tb:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.jx:focus{fill:rgba(8, 8, 8, 1)}.ld:focus svg{color:#000000}.ou:focus{transform:scale(1.01)}.kc:active{border-style:none}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:50px}.gc{max-width:680px}.gr{margin-top:32px}.gw{align-items:center}.iw{border-top:solid 1px #F2F2F2}.ix{border-bottom:solid 1px #F2F2F2}.iy{margin:32px 0 0}.iz{padding:3px 8px}.ji> *{margin-right:24px}.jj> :last-child{margin-right:0}.kj{margin-top:0px}.ky{margin:0}.mr{font-size:20px}.ms{margin-top:2.14em}.mt{line-height:32px}.mu{letter-spacing:-0.003em}.ne{margin-top:56px}.of{font-size:24px}.og{margin-top:1.95em}.oh{line-height:30px}.oi{letter-spacing:-0.016em}.oo{margin-top:0.94em}.pg{margin-top:1.72em}.ph{line-height:24px}.pi{letter-spacing:0}.pr{margin-top:1.14em}.qz{display:inline-block}.rd{flex-direction:row}.rg{margin-bottom:0}.rh{margin-right:20px}.rw{max-width:500px}.sx{margin-bottom:88px}.ti{margin:40px 0 16px}.tu{width:min-width}.tz{padding-top:72px}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.ki{margin-top:0px}.qy{display:inline-block}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.kh{margin-top:0px}.qx{display:inline-block}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.kf{margin-top:0px}.kg{margin-right:0px}.qw{display:inline-block}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:2px}.gn{margin-top:24px}.gs{align-items:flex-start}.hv{flex-direction:column}.ik{margin:24px -24px 0}.il{padding:0}.ja> *{margin-right:8px}.jb> :last-child{margin-right:24px}.js{margin-left:0px}.kd{margin-top:0px}.ke{margin-right:0px}.ku{margin:0}.le{border:1px solid #F2F2F2}.lf{border-radius:99em}.lg{padding:0px 16px 0px 12px}.lh{height:38px}.li{align-items:center}.lk svg{margin-right:8px}.mb{font-size:18px}.mc{margin-top:1.56em}.md{line-height:28px}.me{letter-spacing:-0.003em}.na{margin-top:40px}.np{font-size:20px}.nq{margin-top:1.2em}.nr{line-height:24px}.ns{letter-spacing:0}.ok{margin-top:0.67em}.ow{font-size:16px}.ox{margin-top:1.23em}.pn{margin-top:1.34em}.qv{display:inline-block}.ro{margin-bottom:20px}.rp{margin-right:0}.sa{max-width:100%}.sd{font-size:24px}.se{line-height:30px}.sf{letter-spacing:-0.016em}.st{margin-bottom:64px}.te{margin:32px 0 16px}.tq{width:100%}.tv{padding-top:48px}.lj:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:50px}.gb{max-width:680px}.gq{margin-top:32px}.gv{align-items:center}.is{border-top:solid 1px #F2F2F2}.it{border-bottom:solid 1px #F2F2F2}.iu{margin:32px 0 0}.iv{padding:3px 8px}.jg> *{margin-right:24px}.jh> :last-child{margin-right:0}.kx{margin:0}.mn{font-size:20px}.mo{margin-top:2.14em}.mp{line-height:32px}.mq{letter-spacing:-0.003em}.nd{margin-top:56px}.ob{font-size:24px}.oc{margin-top:1.95em}.od{line-height:30px}.oe{letter-spacing:-0.016em}.on{margin-top:0.94em}.pd{margin-top:1.72em}.pe{line-height:24px}.pf{letter-spacing:0}.pq{margin-top:1.14em}.re{flex-direction:row}.ri{margin-bottom:0}.rj{margin-right:20px}.rx{max-width:500px}.sw{margin-bottom:88px}.th{margin:40px 0 16px}.tt{width:min-width}.ty{padding-top:72px}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:50px}.ga{max-width:680px}.gp{margin-top:32px}.gu{align-items:center}.io{border-top:solid 1px #F2F2F2}.ip{border-bottom:solid 1px #F2F2F2}.iq{margin:32px 0 0}.ir{padding:3px 8px}.je> *{margin-right:24px}.jf> :last-child{margin-right:0}.kw{margin:0}.mj{font-size:20px}.mk{margin-top:2.14em}.ml{line-height:32px}.mm{letter-spacing:-0.003em}.nc{margin-top:56px}.nx{font-size:24px}.ny{margin-top:1.95em}.nz{line-height:30px}.oa{letter-spacing:-0.016em}.om{margin-top:0.94em}.pa{margin-top:1.72em}.pb{line-height:24px}.pc{letter-spacing:0}.pp{margin-top:1.14em}.rf{flex-direction:row}.rk{margin-bottom:0}.rl{margin-right:20px}.ry{max-width:500px}.sv{margin-bottom:88px}.tg{margin:40px 0 16px}.ts{width:min-width}.tx{padding-top:72px}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:2px}.go{margin-top:24px}.gt{align-items:flex-start}.hw{flex-direction:column}.im{margin:24px 0 0}.in{padding:0}.jc> *{margin-right:8px}.jd> :last-child{margin-right:8px}.jt{margin-left:0px}.kv{margin:0}.ll{border:1px solid #F2F2F2}.lm{border-radius:99em}.ln{padding:0px 16px 0px 12px}.lo{height:38px}.lp{align-items:center}.lr svg{margin-right:8px}.mf{font-size:18px}.mg{margin-top:1.56em}.mh{line-height:28px}.mi{letter-spacing:-0.003em}.nb{margin-top:40px}.nt{font-size:20px}.nu{margin-top:1.2em}.nv{line-height:24px}.nw{letter-spacing:0}.ol{margin-top:0.67em}.oy{font-size:16px}.oz{margin-top:1.23em}.po{margin-top:1.34em}.rm{margin-bottom:20px}.rn{margin-right:0}.rz{max-width:100%}.sg{font-size:24px}.sh{line-height:30px}.si{letter-spacing:-0.016em}.su{margin-bottom:64px}.tf{margin:32px 0 16px}.tr{width:100%}.tw{padding-top:48px}.lq:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="print">.qt{display:none}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.ih{max-height:none}</style><style type="text/css" data-fela-rehydration="550" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.or{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2Feef18d2195d&amp;%7Efeature=LoOpenInAppButton&amp;%7Echannel=ShowPostUnderCollection&amp;source=---top_nav_layout_nav-----------------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=---top_nav_layout_nav-----------------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fnew-story&amp;source=---top_nav_layout_nav-----------------------new_post_topnav------------------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=---top_nav_layout_nav-----------------------------------------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="speechify-ignore gn go gp gq gr l"><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="gs gt gu gv gw ab"><div><div class="ab gx"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@dontmesswithjo?source=post_page---byline--eef18d2195d---------------------------------------"><div class="l gy gz by ha hb"><div class="l fj"><img alt="Joanna Smith" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/0*NbDFk9jPmHBZ48cS.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="hc by l dd de fs n hd ft"></div></div></div></a></div></div><div class="he ab fj"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/google-developers?source=post_page---byline--eef18d2195d---------------------------------------" rel="noopener follow"><div class="l hf hg by ha hh"><div class="l fj"><img alt="Google Developers" class="l fd by br hi cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*Zkhl4Zz43z2_iR_ADlP-rg.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="hc by l br hi fs n hd ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="hj ab q"><div class="ab q hk"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b hl hm bk"><a class="af ag ah ai aj ak al am an ao ap aq ar hn" data-testid="authorName" rel="noopener follow" href="/@dontmesswithjo?source=post_page---byline--eef18d2195d---------------------------------------">Joanna Smith</a></p></div></div></div><span class="ho hp" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b hl hm du"><span><a class="hq hr ah ai aj ak al am an ao ap aq ar ex hs ht" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F2918c49416d6&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;user=Joanna+Smith&amp;userId=2918c49416d6&amp;source=post_page-2918c49416d6--byline--eef18d2195d---------------------post_header------------------">Follow</a></span></p></div></div></span></div></div><div class="l hu"><span class="bf b bg z du"><div class="ab cn hv hw hx"><div class="fu fv ab"><div class="bf b bg z du ab hy"><span class="hz l hu">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar hn ab q" data-testid="publicationName" href="https://medium.com/google-developers?source=post_page---byline--eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b bg z ia ib ic id ie if ig ih bk">Google Developers</p></a></div></div></div><div class="h k"><span class="ho hp" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">6 min read</span><div class="ii ij l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">May 12, 2016</span></div></span></div></span></div></div></div><div class="ab cp ik il im in io ip iq ir is it iu iv iw ix iy iz"><div class="h k w fg fh q"><div class="jp l"><div class="ab q jq jr"><div class="pw-multi-vote-icon fj hz js jt ju"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fgoogle-developers%2Feef18d2195d&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;user=Joanna+Smith&amp;userId=2918c49416d6&amp;source=---header_actions--eef18d2195d---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="jv ao jw jx jy jz am ka kb kc ju"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kd ke kf kg kh ki kj"><p class="bf b dv z du"><span class="kk">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao jv kn ko ab q fk kp kq" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="km"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b dv z du"><span class="pw-responses-count kl km">1</span></p></button></div></div></div><div class="ab q ja jb jc jd je jf jg jh ji jj jk jl jm jn jo"><div class="kr k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Feef18d2195d&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;source=---header_actions--eef18d2195d---------------------bookmark_footer------------------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du ks" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd kt cn"><div class="l ae"><div class="ab cb"><div class="ku kv kw kx ky kz ci bh"><div class="ab"><div class="bm" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al la an ao ap ex lb lc kq ld le lf lg lh s li lj lk ll lm ln lo u lp lq lr"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al la an ao ap ex lb lc kq ld le lf lg lh s li lj lk ll lm ln lo u lp lq lr"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div></div></div></div><div class="ls lt lu lv lw"><div class="ab cb"><div class="ci bh fz ga gb gc"><p id="1eae" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk"><strong class="ma mw">Dominating the Overview Screen</strong></p><figure class="na nb nc nd ne nf mx my paragraph-image"><div class="mx my mz"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 1100w, https://miro.medium.com/v2/resize:fit:562/format:webp/1*7cG0Y02Cl2CHIHDTT6BvFw.png 562w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 281px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*7cG0Y02Cl2CHIHDTT6BvFw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*7cG0Y02Cl2CHIHDTT6BvFw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*7cG0Y02Cl2CHIHDTT6BvFw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*7cG0Y02Cl2CHIHDTT6BvFw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*7cG0Y02Cl2CHIHDTT6BvFw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*7cG0Y02Cl2CHIHDTT6BvFw.png 1100w, https://miro.medium.com/v2/resize:fit:562/1*7cG0Y02Cl2CHIHDTT6BvFw.png 562w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 281px"/><img alt="" class="bh kz ng c" width="281" height="500" loading="eager" role="presentation"/></picture></div></figure><p id="b13e" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">Nearly everyone is familiar with the “recents menu” (technically called the <a class="af nh" href="http://developer.android.com/guide/components/recents.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog" rel="noopener ugc nofollow" target="_blank">Overview screen</a>). Probably because it has a guaranteed button dedicated to letting users switch context with ease. But some apps have more than one card in this Overview screen, which can make them seem special.</p><p id="e5f0" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">But they’re not, actually. Any app can have multiple cards here. And the system permits more than one task per app to be listed at once. But that means we need to take a moment to discuss tasks. (Or you can read <span class="hp"><span class="hp" aria-hidden="false"><a class="ni hq fe" href="https://medium.com/u/51a4f24f5367?source=post_page---user_mention--eef18d2195d---------------------------------------" rel="noopener" target="_blank">Ian Lake</a></span></span>’s <a class="af nh" rel="noopener" href="/@ianhlake/tasks-and-the-back-stack-dbb7c3b0f6d4#.bdlsif8er">blog post</a> to learn all about the task stack.)</p><figure class="na nb nc nd ne nf"><div class="nj ia l fj"><div class="nk nl l"></div></div></figure><h1 id="ff61" class="nm nn lz bf no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj bk">A brief introduction to tasks</h1><p id="f9b3" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">Despite what it looks like, the Overview screen is not actually a list of the recent apps a user has used. Rather, it is a list of <em class="op">tasks</em>. Tasks are how your app can distinguish between disparate elements, where a user might want to switch between each piece. For example, consider an email app with a primary task for the inbox and a separate task for composing a new email. If both are listed in the recents menu, the user can easily reference back to the existing email when drafting their response. This is a beautiful use of tasks.</p><p id="becb" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">With the introduction of the N preview, we have now been exposed to the multi-window world. And this actually presents a perfect opportunity to identify what should be a separate task. Because <strong class="ma mw">in the multi-window world, each task will have its own window</strong>. So, if two elements of your app should logically exist side-by-side — that’s a moment for tasks.</p><figure class="na nb nc nd ne nf mx my paragraph-image"><div role="button" tabindex="0" class="or os fj ot bh ou"><div class="mx my oq"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*PgjFxCaqQoBj7LdKU5PlAA.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*PgjFxCaqQoBj7LdKU5PlAA.png 640w, https://miro.medium.com/v2/resize:fit:720/1*PgjFxCaqQoBj7LdKU5PlAA.png 720w, https://miro.medium.com/v2/resize:fit:750/1*PgjFxCaqQoBj7LdKU5PlAA.png 750w, https://miro.medium.com/v2/resize:fit:786/1*PgjFxCaqQoBj7LdKU5PlAA.png 786w, https://miro.medium.com/v2/resize:fit:828/1*PgjFxCaqQoBj7LdKU5PlAA.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*PgjFxCaqQoBj7LdKU5PlAA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*PgjFxCaqQoBj7LdKU5PlAA.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh kz ng c" width="700" height="398" loading="lazy" role="presentation"/></picture></div></div></figure><p id="fa8f" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">So, now that you understand a bit more about tasks, the next logical question is what this has to do with the Overview screen.</p><h1 id="acec" class="nm nn lz bf no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj bk">Tasks as Concurrent Documents</h1><p id="f8ce" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">We call multiple tasks “concurrent documents” and concurrent documents is what you see when you see two or more cards in the recents menu, all from one app. Since Android 5.0 allows more than one task from each app to appear in the Overview screen, it’s useful to know how to leverage concurrent documents in your own app. Especially because doing so can make it easier for users to <em class="op">do things</em> and that will make users love you.</p><p id="cf73" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">We call it “concurrent” because your app is multi-tasking here, as the user interacts with multiple parts of your app at once. And we refer to these separate instances as “documents” because we didn’t have a better way to say “anything that you create that lives separately from the rest of your app.”</p><p id="95cb" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">That “document” could actually <em class="op">be</em> a document, in a text editor. But it could also be that draft email we discussed earlier, or a tab in a browser, or even a specific conversation view within a messaging app. Your imagination is your only limit here.</p><p id="388c" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">So, the first step in creating concurrent documents is identifying what should logically exist independently. To that end, multi-window really helps distinguish good cases for concurrent documents. <strong class="ma mw">Any time you would want to see two Activities side-by-side, those activities would have to be separate tasks</strong>. So use this as your guiding principle when identifying elements to separate out. Could the user benefit from a side-by-side view?</p><h1 id="d24a" class="nm nn lz bf no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj bk">How to add a task</h1><p id="2b48" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">To add a task to the Overview screen, you have two approaches to choose from: using a manifest attribute to specify the default behavior for an Activity or using a flag to specify the document behavior for an Intent dynamically.</p><h2 id="f090" class="ov nn lz bf no ow ox dy ns oy oz ea nw mj pa pb pc mn pd pe pf mr pg ph pi pj bk">Using a manifest attribute</h2><p id="0545" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">If you prefer to only specify the document behavior once, you can set a default behavior for an entire Activity in your AndroidManifest.xml file. The <a class="af nh" href="http://developer.android.com/reference/android/R.attr.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#documentLaunchMode" rel="noopener ugc nofollow" target="_blank"><em class="op">android:documentLaunchMode</em></a> attribute has four possible values:</p><ul class=""><li id="691d" class="lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv pk pl pm bk"><em class="op">intoExisting</em> reuses a previous document for this new task, perhaps even replacing an existing task in the document.</li><li id="6a38" class="lx ly lz ma b mb pn md me mf po mh mi mj pp ml mm mn pq mp mq mr pr mt mu mv pk pl pm bk"><em class="op">always</em> will create a new document for the task, every time.</li><li id="a610" class="lx ly lz ma b mb pn md me mf po mh mi mj pp ml mm mn pq mp mq mr pr mt mu mv pk pl pm bk"><em class="op">none</em> creates the task in the same window as the current activity, aka on the same stack.</li><li id="8fda" class="lx ly lz ma b mb pn md me mf po mh mi mj pp ml mm mn pq mp mq mr pr mt mu mv pk pl pm bk"><em class="op">never</em> serves to override any specified flags and keep the task in the current stack.</li></ul><h2 id="493d" class="ov nn lz bf no ow ox dy ns oy oz ea nw mj pa pb pc mn pd pe pf mr pg ph pi pj bk">Using Intent Flags</h2><p id="e832" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">If you decide you want to determine the document status on a flexible basis by using flags, then it’s time to become familiar with the <a class="af nh" href="http://developer.android.com/reference/android/content/Intent.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#addFlags(int)" rel="noopener ugc nofollow" target="_blank"><em class="op">addFlags()</em></a> method when building your Intent. (In case you weren’t already.) There are two flags you need to be aware of when dealing with concurrent documents.</p><p id="53c5" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk"><a class="af nh" href="http://developer.android.com/reference/android/content/Intent.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#FLAG_ACTIVITY_NEW_DOCUMENT" rel="noopener ugc nofollow" target="_blank"><em class="op">FLAG_ACTIVITY_NEW_DOCUMENT</em></a> is the equivalent of specifying <em class="op">intoExisting</em> for the manifest attribute. It tells the system to treat this next task as its own window in the Overview screen. However, if there is an existing task with the same base component name and data Uri, the system will reuse it. This means your new document could be replacing an existing document. However, you can override this default behavior. If you always want the system to create a brand new task, you can also add the <a class="af nh" href="http://developer.android.com/reference/android/content/Intent.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#FLAG_ACTIVITY_MULTIPLE_TASK" rel="noopener ugc nofollow" target="_blank"><em class="op">FLAG_ACTIVITY_MULTIPLE_TASK</em></a>, which is the equivalent of specifying <em class="op">always</em> for the manifest attribute.</p><blockquote class="ps pt pu"><p id="7116" class="lx ly op ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk"><strong class="ma mw">Note</strong>: When using the flags approach, the task is automatically removed from the overview screen when the activities are destroyed. So, for a perfect match between flags and the always attribute, you also need to add <a class="af nh" href="http://developer.android.com/reference/android/content/Intent.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#FLAG_ACTIVITY_RETAIN_IN_RECENTS" rel="noopener ugc nofollow" target="_blank"><em class="lz">FLAG_ACTIVITY_RETAIN_IN_RECENTS</em></a>.</p></blockquote><p id="d40f" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">In multi-window mode, this gets even better as you can use <em class="op">FLAG_ACTIVITY_LAUNCH_ADJACENT</em> in conjunction with <em class="op">FLAG_ACTIVITY_NEW_DOCUMENT</em> to hint to the system that the task should be launched alongside the existing task. Fortunately, in non-multi-window mode, this flag provides a hint that the system simply ignores.</p><p id="7711" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">This approach may look something like the example below, where you are constructing your Intent with its extras. But, before calling startActivity, you’re also adding the flag for a new document, and perhaps even the flag for multiple tasks (depending on your decision-making process there).</p><pre class="na nb nc nd ne pv pw px py ay pz bk"><span id="73ad" class="ov nn lz pw b hl qa qb l hy qc">Intent newDocumentIntent =<br/> new Intent(this, NewDocumentActivity.class);<br/>newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, counter);<br/><strong class="pw mw">newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);</strong><br/>if (mMultipleTasksCheckbox.isChecked()) {<br/> <strong class="pw mw">newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);</strong><br/>}<br/>startActivity(newDocumentIntent);</span></pre><p id="34b5" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">Between flags and the attribute, you’re accomplishing the same goal. But where an attribute only needs to be specified once for the activity, a flag will need to be added to every Intent. So you’ll want to choose a code path based on the variability of your Activity’s use case.</p><h1 id="9c3a" class="nm nn lz bf no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj bk">Getting fancy with concurrent documents</h1><p id="1b9b" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">The end goal here is to place your app in a position to be helpful when the user checks that recents menu. Adding your tasks to the list is only the beginning. There are several other ways you can customize and control that experience.</p><p id="9e7e" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">To avoid cluttering the recents screen, you can set the maximum number of tasks from your app that can appear in that screen. To do this, set the &lt;application&gt; attribute <a class="af nh" href="http://developer.android.com/guide/topics/manifest/activity-element.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#maxrecents" rel="noopener ugc nofollow" target="_blank"><em class="op">android:maxRecents</em></a>. The current maximum that can be specified is 50 tasks per user (25 for low RAM devices).</p><p id="11c8" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">To <a class="af nh" href="http://developer.android.com/guide/components/recents.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#removing" rel="noopener ugc nofollow" target="_blank">remove a task</a> entirely, you can use <a class="af nh" href="http://developer.android.com/reference/android/app/ActivityManager.AppTask.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#finishAndRemoveTask()" rel="noopener ugc nofollow" target="_blank"><em class="op">finishAndRemoveTask()</em></a>. And if you’re not quite ready to let go yet, tasks can persist across reboots. So if you’d like to retain one or all of your tasks, specify that in the <a class="af nh" href="http://developer.android.com/reference/android/R.attr.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#persistableMode" rel="noopener ugc nofollow" target="_blank"><em class="op">android:persistableMode</em></a> attribute. (But make sure you’re properly saving your activity state.)</p><p id="ee51" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">And, fun fact: you can even change the look of an activity in the recents screen, with a custom color, label, and icon. Just call <a class="af nh" href="http://developer.android.com/reference/android/app/Activity.html?utm_campaign=android_series_concurrent_documents_051216&amp;utm_source=medium&amp;utm_medium=blog#setTaskDescription(android.app.ActivityManager.TaskDescription)" rel="noopener ugc nofollow" target="_blank"><em class="op">setTaskDescription()</em></a> to get each task to look exactly right and — most importantly — be clear to the user.</p><h1 id="f2f1" class="nm nn lz bf no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj bk">What’s next?</h1><p id="9651" class="pw-post-body-paragraph lx ly lz ma b mb ok md me mf ol mh mi mj om ml mm mn on mp mq mr oo mt mu mv ls bk">With all of these great flags and manifest attributes for concurrent document behavior, your app will be dominating that recents menu in no time! Just, you know, be sure that domination is thoughtful and useful to a user. Because you don’t want to go crazy and get yourself uninstalled. Use your newfound skills wisely in order to #BuildBetterApps.</p><p id="33b0" class="pw-post-body-paragraph lx ly lz ma b mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv ls bk">Follow the <a class="af nh" href="https://plus.google.com/collection/sLR0p" rel="noopener ugc nofollow" target="_blank">Android Development Patterns Collection</a> for more!</p><figure class="na nb nc nd ne nf mx my paragraph-image"><div role="button" tabindex="0" class="or os fj ot bh ou"><div class="mx my qd"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*3TliuZh1EbdCBwiP428xpw.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*3TliuZh1EbdCBwiP428xpw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*3TliuZh1EbdCBwiP428xpw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*3TliuZh1EbdCBwiP428xpw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*3TliuZh1EbdCBwiP428xpw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*3TliuZh1EbdCBwiP428xpw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*3TliuZh1EbdCBwiP428xpw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*3TliuZh1EbdCBwiP428xpw.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh kz ng c" width="700" height="281" loading="lazy" role="presentation"/></picture></div></div></figure></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="qe qf ab hx"><div class="qg ab"><a class="qh ay am ao" rel="noopener follow" href="/tag/android-app-development?source=post_page-----eef18d2195d---------------------------------------"><div class="qi fj cx qj ge qk ql bf b bg z bk qm">Android App Development</div></a></div><div class="qg ab"><a class="qh ay am ao" rel="noopener follow" href="/tag/android?source=post_page-----eef18d2195d---------------------------------------"><div class="qi fj cx qj ge qk ql bf b bg z bk qm">Android</div></a></div><div class="qg ab"><a class="qh ay am ao" rel="noopener follow" href="/tag/buildbetterapps?source=post_page-----eef18d2195d---------------------------------------"><div class="qi fj cx qj ge qk ql bf b bg z bk qm">Buildbetterapps</div></a></div></div></div></div><div class="l"></div><footer class="qn qo qp qq qr ab q qs hh c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp qt"><div class="ab q jq"><div class="qu l"><span class="l qv qw qx e d"><div class="ab q jq jr"><div class="pw-multi-vote-icon fj hz js jt ju"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fgoogle-developers%2Feef18d2195d&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;user=Joanna+Smith&amp;userId=2918c49416d6&amp;source=---footer_actions--eef18d2195d---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="jv ao jw jx jy jz am ka kb kc ju"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kd ke kf kg kh ki kj"><p class="bf b dv z du"><span class="kk">--</span></p></div></div></span><span class="l h g f qy qz"><div class="ab q jq jr"><div class="pw-multi-vote-icon fj hz js jt ju"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fgoogle-developers%2Feef18d2195d&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;user=Joanna+Smith&amp;userId=2918c49416d6&amp;source=---footer_actions--eef18d2195d---------------------clap_footer------------------"><div><div class="bm" aria-hidden="false"><div class="jv ao jw jx jy jz am ka kb kc ju"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kd ke kf kg kh ki kj"><p class="bf b dv z du"><span class="kk">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao jv kn ko ab q fk kp kq" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="km"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b bg z du"><span class="pw-responses-count kl km">1</span></p></button></div></div></div></div><div class="ab q"><div class="ra l hu"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Feef18d2195d&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fgoogle-developers%2Fdominating-the-overview-screen-eef18d2195d&amp;source=---footer_actions--eef18d2195d---------------------bookmark_footer------------------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du ks" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="ra l hu"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al la an ao ap ex lb lc kq ld"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="rb l"><div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="rc l"><div class="ab rd re rf hw hv"><div class="rg rh ri rj rk rl rm rn ro rp ab cp"><div class="h k"><a href="https://medium.com/google-developers?source=post_page---post_publication_info--eef18d2195d---------------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Google Developers" class="rq gy gz cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*Zkhl4Zz43z2_iR_ADlP-rg.png" width="48" height="48" loading="lazy"/><div class="rq l gz gy fs n fr rr"></div></div></a></div><div class="j i d"><a href="https://medium.com/google-developers?source=post_page---post_publication_info--eef18d2195d---------------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Google Developers" class="rq rt rs cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*Zkhl4Zz43z2_iR_ADlP-rg.png" width="64" height="64" loading="lazy"/><div class="rq l rs rt fs n fr rr"></div></div></a></div><div class="j i d ru hu"><div class="ab"></div></div></div><div class="ab co rv"><div class="rw rx ry rz sa l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://medium.com/google-developers?source=post_page---post_publication_info--eef18d2195d---------------------------------------" rel="noopener follow"><h2 class="pw-author-name bf sc sd se sf sg sh si mj pb pc mn pe pf mr ph pi bk"><span class="ls sb">Published in <!-- -->Google Developers</span></h2></a><div class="qg ab gx"><div class="l hu"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar hn" rel="noopener follow" href="/google-developers/followers?source=post_page---post_publication_info--eef18d2195d---------------------------------------">153K Followers</a></span></div><div class="bf b bg z du ab hy"><span class="ho l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar hn" rel="noopener follow" href="/google-developers/error-404-google-developers-medium-account-not-found-a339c3008439?source=post_page---post_publication_info--eef18d2195d---------------------------------------">Last published <span>Jun 13, 2023</span></a></div></div><div class="sj l"><p class="bf b bg z bk"><span class="ls">Engineering and technology articles for developers, written and curated by Googlers. The views expressed are those of the authors and don&#x27;t necessarily reflect those of Google.</span></p></div></div></div><div class="h k"><div class="ab"></div></div></div></div><div class="ab rd re rf hw hv"><div class="rg rh ri rj rk rl rm rn ro rp ab cp"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@dontmesswithjo?source=post_page---post_author_info--eef18d2195d---------------------------------------"><div class="l fj"><img alt="Joanna Smith" class="l fd by gz gy cx" src="https://miro.medium.com/v2/resize:fill:96:96/0*NbDFk9jPmHBZ48cS.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l gz gy fs n ay rr"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@dontmesswithjo?source=post_page---post_author_info--eef18d2195d---------------------------------------"><div class="l fj"><img alt="Joanna Smith" class="l fd by rs rt cx" src="https://miro.medium.com/v2/resize:fill:128:128/0*NbDFk9jPmHBZ48cS.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l rs rt fs n ay rr"></div></div></a></div><div class="j i d ru hu"><div class="ab"><span><button class="bf b bg z sk qi sl sm sn so sp ev ew sq sr ss fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co rv"><div class="rw rx ry rz sa l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" rel="noopener follow" href="/@dontmesswithjo?source=post_page---post_author_info--eef18d2195d---------------------------------------"><h2 class="pw-author-name bf sc sd se sf sg sh si mj pb pc mn pe pf mr ph pi bk"><span class="ls sb">Written by <!-- -->Joanna Smith</span></h2></a><div class="qg ab gx"><div class="l hu"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar hn" rel="noopener follow" href="/@dontmesswithjo/followers?source=post_page---post_author_info--eef18d2195d---------------------------------------">5.2K Followers</a></span></div><div class="bf b bg z du ab hy"><span class="ho l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar hn" rel="noopener follow" href="/@dontmesswithjo/following?source=post_page---post_author_info--eef18d2195d---------------------------------------">34 Following</a></div></div><div class="sj l"><p class="bf b bg z bk"><span class="ls">Developer Advocate for G Suite wanting to help get G Suite to work for you</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z sk qi sl sm sn so sp ev ew sq sr ss fa fb fc fd bm fe ff">Follow</button></span></div></div></div></div></div></div></div><div class="st su sv sw sx l"><div class="sy bh r rb"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf sc np nr ns nt nv nw nx nz oa ob od oe of oh oi bk">Responses (<!-- -->1<!-- -->)</h2><div class="ab sz"><div><div class="bm" aria-hidden="false"><a class="ta tb" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--eef18d2195d---------------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div><div class="tc td te tf tg th ti l"></div><div class="tj l"><button class="bf b bg z bk qi tk tl tm ks kp sp ev ew ex tn to tp fa tq tr ts tt tu fb fc fd bm fe ff">See all responses</button></div></div></div></div><div class="tv tw tx ty tz l bx"><div class="h k j"><div class="sy bh ua ub"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="uc ab jq hx"><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/about?autoplay=1&amp;source=post_page-----eef18d2195d---------------------------------------"><p class="bf b dv z du">About</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----eef18d2195d---------------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="mailto:pressinquiries@medium.com" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="ud ue l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----eef18d2195d---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="ud l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/business?source=post_page-----eef18d2195d---------------------------------------"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20250214-225023-b6ac233ec4"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-eef18d2195d","user-2918c49416d6","collection-2e5ce7f173a5"],"serverVariantState":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":true,"vary":[],"pubFeaturingPostPageLabelEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"874be879-c953-4124-bc57-e9ac43fe6328","requestTag":"","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-7e30456023bdc863ddf3432bcf15fb37-861d04a56e06adc3-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers\u002Fdominating-the-overview-screen-eef18d2195d","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20250214-225023-b6ac233ec4","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20250214-225023-b6ac233ec4","commit":"b6ac233ec4e33c48e304b373b7df8c338a410ef2"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"google-developers\"})":{"__ref":"Collection:2e5ce7f173a5"},"postResult({\"id\":\"eef18d2195d\"})":{"__ref":"Post:eef18d2195d"}},"ImageMetadata:":{"__typename":"ImageMetadata","id":""},"Collection:2e5ce7f173a5":{"__typename":"Collection","id":"2e5ce7f173a5","favicon":{"__ref":"ImageMetadata:"},"customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFFFFFFF","point":0},{"__typename":"ColorPoint","color":"#FFE8F3E8","point":0.1},{"__typename":"ColorPoint","color":"#FFE8F3E8","point":0.2},{"__typename":"ColorPoint","color":"#FFD1E7D1","point":0.6},{"__typename":"ColorPoint","color":"#FFA3D0A2","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF1A8917","point":0},{"__typename":"ColorPoint","color":"#FF11800E","point":0.1},{"__typename":"ColorPoint","color":"#FF0F730C","point":0.2},{"__typename":"ColorPoint","color":"#FF095407","point":1}]},"tintBackgroundSpectrum":null},"domain":null,"slug":"google-developers","googleAnalyticsId":null,"name":"Google Developers","avatar":{"__ref":"ImageMetadata:1*Zkhl4Zz43z2_iR_ADlP-rg.png"},"description":"Engineering and technology articles for developers, written and curated by Googlers. The views expressed are those of the authors and don't necessarily reflect those of Google.","subscriberCount":153959,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:a339c3008439"}]},"isAuroraVisible":false,"tintColor":null,"newsletterV3":null,"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:2e5ce7f173a5-viewerId:lo_769e578263b0"},"twitterUsername":"googledevs","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*Zkhl4Zz43z2_iR_ADlP-rg.png"}},"ImageMetadata:1*Zkhl4Zz43z2_iR_ADlP-rg.png":{"__typename":"ImageMetadata","id":"1*Zkhl4Zz43z2_iR_ADlP-rg.png","originalWidth":1024,"originalHeight":1024},"User:991272e72e68":{"__typename":"User","id":"991272e72e68","customDomainState":null,"hasSubdomain":false,"username":"googledevs"},"Post:a339c3008439":{"__typename":"Post","id":"a339c3008439","firstPublishedAt":1686672110751,"creator":{"__ref":"User:991272e72e68"},"collection":{"__ref":"Collection:2e5ce7f173a5"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers\u002Ferror-404-google-developers-medium-account-not-found-a339c3008439","sequence":null,"uniqueSlug":"error-404-google-developers-medium-account-not-found-a339c3008439"},"LinkedAccounts:2918c49416d6":{"__typename":"LinkedAccounts","mastodon":null,"id":"2918c49416d6"},"User:2918c49416d6":{"__typename":"User","id":"2918c49416d6","linkedAccounts":{"__ref":"LinkedAccounts:2918c49416d6"},"isSuspended":false,"name":"Joanna Smith","imageId":"0*NbDFk9jPmHBZ48cS.jpeg","customDomainState":null,"hasSubdomain":false,"username":"dontmesswithjo","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":5277,"followingCount":32,"collectionFollowingCount":2},"bio":"Developer Advocate for G Suite wanting to help get G Suite to work for you","membership":null,"allowNotes":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:2918c49416d6-viewerId:lo_769e578263b0"},"twitterScreenName":"dontmesswithjo"},"Paragraph:b6efabf39c8e_0":{"__typename":"Paragraph","id":"b6efabf39c8e_0","name":"1eae","type":"P","href":null,"layout":null,"metadata":null,"text":"Dominating the Overview Screen","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":30,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*7cG0Y02Cl2CHIHDTT6BvFw.png":{"__typename":"ImageMetadata","id":"1*7cG0Y02Cl2CHIHDTT6BvFw.png","originalHeight":500,"originalWidth":281,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:b6efabf39c8e_1":{"__typename":"Paragraph","id":"b6efabf39c8e_1","name":"190f","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*7cG0Y02Cl2CHIHDTT6BvFw.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_2":{"__typename":"Paragraph","id":"b6efabf39c8e_2","name":"b13e","type":"P","href":null,"layout":null,"metadata":null,"text":"Nearly everyone is familiar with the “recents menu” (technically called the Overview screen). Probably because it has a guaranteed button dedicated to letting users switch context with ease. But some apps have more than one card in this Overview screen, which can make them seem special.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":76,"end":91,"href":"http:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fcomponents\u002Frecents.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_3":{"__typename":"Paragraph","id":"b6efabf39c8e_3","name":"e5f0","type":"P","href":null,"layout":null,"metadata":null,"text":"But they’re not, actually. Any app can have multiple cards here. And the system permits more than one task per app to be listed at once. But that means we need to take a moment to discuss tasks. (Or you can read Ian Lake’s blog post to learn all about the task stack.)","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":212,"end":220,"href":null,"anchorType":"USER","userId":"51a4f24f5367","linkMetadata":null},{"__typename":"Markup","type":"A","start":223,"end":232,"href":"https:\u002F\u002Fmedium.com\u002F@ianhlake\u002Ftasks-and-the-back-stack-dbb7c3b0f6d4#.bdlsif8er","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:d042cf0c4aa69b122698ff94ea036f2b":{"__typename":"MediaResource","id":"d042cf0c4aa69b122698ff94ea036f2b","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fvideoseries%3Flist%3DPLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4Y3JMvbcxQE&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F4Y3JMvbcxQE%2Fhqdefault.jpg&key=d04bfffea46d4aeda930ec88cc64b87c&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Multiple Tasks with Concurrent Documents (Android Development Patterns)"},"Paragraph:b6efabf39c8e_4":{"__typename":"Paragraph","id":"b6efabf39c8e_4","name":"8aaa","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:d042cf0c4aa69b122698ff94ea036f2b"}},"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_5":{"__typename":"Paragraph","id":"b6efabf39c8e_5","name":"ff61","type":"H3","href":null,"layout":null,"metadata":null,"text":"A brief introduction to tasks","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_6":{"__typename":"Paragraph","id":"b6efabf39c8e_6","name":"f9b3","type":"P","href":null,"layout":null,"metadata":null,"text":"Despite what it looks like, the Overview screen is not actually a list of the recent apps a user has used. Rather, it is a list of tasks. Tasks are how your app can distinguish between disparate elements, where a user might want to switch between each piece. For example, consider an email app with a primary task for the inbox and a separate task for composing a new email. If both are listed in the recents menu, the user can easily reference back to the existing email when drafting their response. This is a beautiful use of tasks.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":131,"end":136,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_7":{"__typename":"Paragraph","id":"b6efabf39c8e_7","name":"becb","type":"P","href":null,"layout":null,"metadata":null,"text":"With the introduction of the N preview, we have now been exposed to the multi-window world. And this actually presents a perfect opportunity to identify what should be a separate task. Because in the multi-window world, each task will have its own window. So, if two elements of your app should logically exist side-by-side — that’s a moment for tasks.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":193,"end":254,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*PgjFxCaqQoBj7LdKU5PlAA.png":{"__typename":"ImageMetadata","id":"1*PgjFxCaqQoBj7LdKU5PlAA.png","originalHeight":458,"originalWidth":806,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:b6efabf39c8e_8":{"__typename":"Paragraph","id":"b6efabf39c8e_8","name":"7509","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*PgjFxCaqQoBj7LdKU5PlAA.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_9":{"__typename":"Paragraph","id":"b6efabf39c8e_9","name":"fa8f","type":"P","href":null,"layout":null,"metadata":null,"text":"So, now that you understand a bit more about tasks, the next logical question is what this has to do with the Overview screen.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_10":{"__typename":"Paragraph","id":"b6efabf39c8e_10","name":"acec","type":"H3","href":null,"layout":null,"metadata":null,"text":"Tasks as Concurrent Documents","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_11":{"__typename":"Paragraph","id":"b6efabf39c8e_11","name":"f8ce","type":"P","href":null,"layout":null,"metadata":null,"text":"We call multiple tasks “concurrent documents” and concurrent documents is what you see when you see two or more cards in the recents menu, all from one app. Since Android 5.0 allows more than one task from each app to appear in the Overview screen, it’s useful to know how to leverage concurrent documents in your own app. Especially because doing so can make it easier for users to do things and that will make users love you.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":383,"end":392,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_12":{"__typename":"Paragraph","id":"b6efabf39c8e_12","name":"cf73","type":"P","href":null,"layout":null,"metadata":null,"text":"We call it “concurrent” because your app is multi-tasking here, as the user interacts with multiple parts of your app at once. And we refer to these separate instances as “documents” because we didn’t have a better way to say “anything that you create that lives separately from the rest of your app.”","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_13":{"__typename":"Paragraph","id":"b6efabf39c8e_13","name":"95cb","type":"P","href":null,"layout":null,"metadata":null,"text":"That “document” could actually be a document, in a text editor. But it could also be that draft email we discussed earlier, or a tab in a browser, or even a specific conversation view within a messaging app. Your imagination is your only limit here.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":31,"end":33,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_14":{"__typename":"Paragraph","id":"b6efabf39c8e_14","name":"388c","type":"P","href":null,"layout":null,"metadata":null,"text":"So, the first step in creating concurrent documents is identifying what should logically exist independently. To that end, multi-window really helps distinguish good cases for concurrent documents. Any time you would want to see two Activities side-by-side, those activities would have to be separate tasks. So use this as your guiding principle when identifying elements to separate out. Could the user benefit from a side-by-side view?","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":198,"end":306,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_15":{"__typename":"Paragraph","id":"b6efabf39c8e_15","name":"d24a","type":"H3","href":null,"layout":null,"metadata":null,"text":"How to add a task","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_16":{"__typename":"Paragraph","id":"b6efabf39c8e_16","name":"2b48","type":"P","href":null,"layout":null,"metadata":null,"text":"To add a task to the Overview screen, you have two approaches to choose from: using a manifest attribute to specify the default behavior for an Activity or using a flag to specify the document behavior for an Intent dynamically.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_17":{"__typename":"Paragraph","id":"b6efabf39c8e_17","name":"f090","type":"H4","href":null,"layout":null,"metadata":null,"text":"Using a manifest attribute","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_18":{"__typename":"Paragraph","id":"b6efabf39c8e_18","name":"0545","type":"P","href":null,"layout":null,"metadata":null,"text":"If you prefer to only specify the document behavior once, you can set a default behavior for an entire Activity in your AndroidManifest.xml file. The android:documentLaunchMode attribute has four possible values:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":150,"end":176,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002FR.attr.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#documentLaunchMode","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":150,"end":176,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_19":{"__typename":"Paragraph","id":"b6efabf39c8e_19","name":"691d","type":"ULI","href":null,"layout":null,"metadata":null,"text":"intoExisting reuses a previous document for this new task, perhaps even replacing an existing task in the document.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":0,"end":12,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_20":{"__typename":"Paragraph","id":"b6efabf39c8e_20","name":"6a38","type":"ULI","href":null,"layout":null,"metadata":null,"text":"always will create a new document for the task, every time.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":0,"end":6,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_21":{"__typename":"Paragraph","id":"b6efabf39c8e_21","name":"a610","type":"ULI","href":null,"layout":null,"metadata":null,"text":"none creates the task in the same window as the current activity, aka on the same stack.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":0,"end":4,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_22":{"__typename":"Paragraph","id":"b6efabf39c8e_22","name":"8fda","type":"ULI","href":null,"layout":null,"metadata":null,"text":"never serves to override any specified flags and keep the task in the current stack.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":0,"end":5,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_23":{"__typename":"Paragraph","id":"b6efabf39c8e_23","name":"493d","type":"H4","href":null,"layout":null,"metadata":null,"text":"Using Intent Flags","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_24":{"__typename":"Paragraph","id":"b6efabf39c8e_24","name":"e832","type":"P","href":null,"layout":null,"metadata":null,"text":"If you decide you want to determine the document status on a flexible basis by using flags, then it’s time to become familiar with the addFlags() method when building your Intent. (In case you weren’t already.) There are two flags you need to be aware of when dealing with concurrent documents.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":135,"end":145,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fcontent\u002FIntent.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#addFlags(int)","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":135,"end":145,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_25":{"__typename":"Paragraph","id":"b6efabf39c8e_25","name":"53c5","type":"P","href":null,"layout":null,"metadata":null,"text":"FLAG_ACTIVITY_NEW_DOCUMENT is the equivalent of specifying intoExisting for the manifest attribute. It tells the system to treat this next task as its own window in the Overview screen. However, if there is an existing task with the same base component name and data Uri, the system will reuse it. This means your new document could be replacing an existing document. However, you can override this default behavior. If you always want the system to create a brand new task, you can also add the FLAG_ACTIVITY_MULTIPLE_TASK, which is the equivalent of specifying always for the manifest attribute.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":26,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fcontent\u002FIntent.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#FLAG_ACTIVITY_NEW_DOCUMENT","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":496,"end":523,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fcontent\u002FIntent.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#FLAG_ACTIVITY_MULTIPLE_TASK","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":26,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":59,"end":71,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":496,"end":523,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":563,"end":569,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_26":{"__typename":"Paragraph","id":"b6efabf39c8e_26","name":"7116","type":"BQ","href":null,"layout":null,"metadata":null,"text":"Note: When using the flags approach, the task is automatically removed from the overview screen when the activities are destroyed. So, for a perfect match between flags and the always attribute, you also need to add FLAG_ACTIVITY_RETAIN_IN_RECENTS.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":216,"end":247,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fcontent\u002FIntent.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#FLAG_ACTIVITY_RETAIN_IN_RECENTS","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":4,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":216,"end":247,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_27":{"__typename":"Paragraph","id":"b6efabf39c8e_27","name":"d40f","type":"P","href":null,"layout":null,"metadata":null,"text":"In multi-window mode, this gets even better as you can use FLAG_ACTIVITY_LAUNCH_ADJACENT in conjunction with FLAG_ACTIVITY_NEW_DOCUMENT to hint to the system that the task should be launched alongside the existing task. Fortunately, in non-multi-window mode, this flag provides a hint that the system simply ignores.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":59,"end":88,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":109,"end":135,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_28":{"__typename":"Paragraph","id":"b6efabf39c8e_28","name":"7711","type":"P","href":null,"layout":null,"metadata":null,"text":"This approach may look something like the example below, where you are constructing your Intent with its extras. But, before calling startActivity, you’re also adding the flag for a new document, and perhaps even the flag for multiple tasks (depending on your decision-making process there).","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_29":{"__typename":"Paragraph","id":"b6efabf39c8e_29","name":"73ad","type":"PRE","href":null,"layout":null,"metadata":null,"text":"Intent newDocumentIntent =\n new Intent(this, NewDocumentActivity.class);\nnewDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, counter);\nnewDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);\nif (mMultipleTasksCheckbox.isChecked()) {\n newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);\n}\nstartActivity(newDocumentIntent);","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":145,"end":207,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":252,"end":315,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_30":{"__typename":"Paragraph","id":"b6efabf39c8e_30","name":"34b5","type":"P","href":null,"layout":null,"metadata":null,"text":"Between flags and the attribute, you’re accomplishing the same goal. But where an attribute only needs to be specified once for the activity, a flag will need to be added to every Intent. So you’ll want to choose a code path based on the variability of your Activity’s use case.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_31":{"__typename":"Paragraph","id":"b6efabf39c8e_31","name":"9c3a","type":"H3","href":null,"layout":null,"metadata":null,"text":"Getting fancy with concurrent documents","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_32":{"__typename":"Paragraph","id":"b6efabf39c8e_32","name":"1b9b","type":"P","href":null,"layout":null,"metadata":null,"text":"The end goal here is to place your app in a position to be helpful when the user checks that recents menu. Adding your tasks to the list is only the beginning. There are several other ways you can customize and control that experience.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_33":{"__typename":"Paragraph","id":"b6efabf39c8e_33","name":"9e7e","type":"P","href":null,"layout":null,"metadata":null,"text":"To avoid cluttering the recents screen, you can set the maximum number of tasks from your app that can appear in that screen. To do this, set the \u003Capplication\u003E attribute android:maxRecents. The current maximum that can be specified is 50 tasks per user (25 for low RAM devices).","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":170,"end":188,"href":"http:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Ftopics\u002Fmanifest\u002Factivity-element.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#maxrecents","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":170,"end":188,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_34":{"__typename":"Paragraph","id":"b6efabf39c8e_34","name":"11c8","type":"P","href":null,"layout":null,"metadata":null,"text":"To remove a task entirely, you can use finishAndRemoveTask(). And if you’re not quite ready to let go yet, tasks can persist across reboots. So if you’d like to retain one or all of your tasks, specify that in the android:persistableMode attribute. (But make sure you’re properly saving your activity state.)","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":16,"href":"http:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fcomponents\u002Frecents.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#removing","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":39,"end":60,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fapp\u002FActivityManager.AppTask.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#finishAndRemoveTask()","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":214,"end":237,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002FR.attr.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#persistableMode","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":39,"end":60,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":214,"end":237,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_35":{"__typename":"Paragraph","id":"b6efabf39c8e_35","name":"ee51","type":"P","href":null,"layout":null,"metadata":null,"text":"And, fun fact: you can even change the look of an activity in the recents screen, with a custom color, label, and icon. Just call setTaskDescription() to get each task to look exactly right and — most importantly — be clear to the user.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":130,"end":150,"href":"http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fapp\u002FActivity.html?utm_campaign=android_series_concurrent_documents_051216&utm_source=medium&utm_medium=blog#setTaskDescription(android.app.ActivityManager.TaskDescription)","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":130,"end":150,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_36":{"__typename":"Paragraph","id":"b6efabf39c8e_36","name":"f2f1","type":"H3","href":null,"layout":null,"metadata":null,"text":"What’s next?","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_37":{"__typename":"Paragraph","id":"b6efabf39c8e_37","name":"9651","type":"P","href":null,"layout":null,"metadata":null,"text":"With all of these great flags and manifest attributes for concurrent document behavior, your app will be dominating that recents menu in no time! Just, you know, be sure that domination is thoughtful and useful to a user. Because you don’t want to go crazy and get yourself uninstalled. Use your newfound skills wisely in order to #BuildBetterApps.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:b6efabf39c8e_38":{"__typename":"Paragraph","id":"b6efabf39c8e_38","name":"33b0","type":"P","href":null,"layout":null,"metadata":null,"text":"Follow the Android Development Patterns Collection for more!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":11,"end":50,"href":"https:\u002F\u002Fplus.google.com\u002Fcollection\u002FsLR0p","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*3TliuZh1EbdCBwiP428xpw.png":{"__typename":"ImageMetadata","id":"1*3TliuZh1EbdCBwiP428xpw.png","originalHeight":936,"originalWidth":2334,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:b6efabf39c8e_39":{"__typename":"Paragraph","id":"b6efabf39c8e_39","name":"019d","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*3TliuZh1EbdCBwiP428xpw.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:2e5ce7f173a5-viewerId:lo_769e578263b0":{"__typename":"CollectionViewerEdge","id":"collectionId:2e5ce7f173a5-viewerId:lo_769e578263b0","isEditor":false,"isMuting":false},"UserViewerEdge:userId:2918c49416d6-viewerId:lo_769e578263b0":{"__typename":"UserViewerEdge","id":"userId:2918c49416d6-viewerId:lo_769e578263b0","isMuting":false},"PostViewerEdge:postId:eef18d2195d-viewerId:lo_769e578263b0":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:eef18d2195d-viewerId:lo_769e578263b0"},"Tag:android-app-development":{"__typename":"Tag","id":"android-app-development","displayTitle":"Android App Development","normalizedTagSlug":"android-app-development"},"Tag:android":{"__typename":"Tag","id":"android","displayTitle":"Android","normalizedTagSlug":"android"},"Tag:buildbetterapps":{"__typename":"Tag","id":"buildbetterapps","displayTitle":"Buildbetterapps","normalizedTagSlug":"buildbetterapps"},"Post:eef18d2195d":{"__typename":"Post","id":"eef18d2195d","collection":{"__ref":"Collection:2e5ce7f173a5"},"content({\"postMeteringOptions\":{\"referrer\":\"https:\u002F\u002Fdeveloper.android.com\u002F\"}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"5e3e","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:b6efabf39c8e_0"},{"__ref":"Paragraph:b6efabf39c8e_1"},{"__ref":"Paragraph:b6efabf39c8e_2"},{"__ref":"Paragraph:b6efabf39c8e_3"},{"__ref":"Paragraph:b6efabf39c8e_4"},{"__ref":"Paragraph:b6efabf39c8e_5"},{"__ref":"Paragraph:b6efabf39c8e_6"},{"__ref":"Paragraph:b6efabf39c8e_7"},{"__ref":"Paragraph:b6efabf39c8e_8"},{"__ref":"Paragraph:b6efabf39c8e_9"},{"__ref":"Paragraph:b6efabf39c8e_10"},{"__ref":"Paragraph:b6efabf39c8e_11"},{"__ref":"Paragraph:b6efabf39c8e_12"},{"__ref":"Paragraph:b6efabf39c8e_13"},{"__ref":"Paragraph:b6efabf39c8e_14"},{"__ref":"Paragraph:b6efabf39c8e_15"},{"__ref":"Paragraph:b6efabf39c8e_16"},{"__ref":"Paragraph:b6efabf39c8e_17"},{"__ref":"Paragraph:b6efabf39c8e_18"},{"__ref":"Paragraph:b6efabf39c8e_19"},{"__ref":"Paragraph:b6efabf39c8e_20"},{"__ref":"Paragraph:b6efabf39c8e_21"},{"__ref":"Paragraph:b6efabf39c8e_22"},{"__ref":"Paragraph:b6efabf39c8e_23"},{"__ref":"Paragraph:b6efabf39c8e_24"},{"__ref":"Paragraph:b6efabf39c8e_25"},{"__ref":"Paragraph:b6efabf39c8e_26"},{"__ref":"Paragraph:b6efabf39c8e_27"},{"__ref":"Paragraph:b6efabf39c8e_28"},{"__ref":"Paragraph:b6efabf39c8e_29"},{"__ref":"Paragraph:b6efabf39c8e_30"},{"__ref":"Paragraph:b6efabf39c8e_31"},{"__ref":"Paragraph:b6efabf39c8e_32"},{"__ref":"Paragraph:b6efabf39c8e_33"},{"__ref":"Paragraph:b6efabf39c8e_34"},{"__ref":"Paragraph:b6efabf39c8e_35"},{"__ref":"Paragraph:b6efabf39c8e_36"},{"__ref":"Paragraph:b6efabf39c8e_37"},{"__ref":"Paragraph:b6efabf39c8e_38"},{"__ref":"Paragraph:b6efabf39c8e_39"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:2918c49416d6"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002Fgoogle-developers\u002Fdominating-the-overview-screen-eef18d2195d","primaryTopic":null,"topics":[],"isLimitedState":false,"isPublished":true,"allowResponses":true,"latestPublishedVersion":"b6efabf39c8e","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":1},"responseDistribution":"NOT_DISTRIBUTED","clapCount":112,"title":"Dominating the Overview Screen","isSeries":false,"sequence":null,"uniqueSlug":"dominating-the-overview-screen-eef18d2195d","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1463087765290,"readingTime":5.433018867924528,"previewContent":{"__typename":"PreviewContent","subtitle":"(Using Concurrent Documents to Make Users Love You)"},"previewImage":{"__ref":"ImageMetadata:1*7cG0Y02Cl2CHIHDTT6BvFw.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1463076432617,"updatedAt":1529500356358,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:eef18d2195d-viewerId:lo_769e578263b0"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:android-app-development"},{"__ref":"Tag:android"},{"__ref":"Tag:buildbetterapps"}],"isFeaturedInPublishedPublication":false,"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":1294,"layerCake":0,"responsesLocked":false}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"HIT"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.8b67b313.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.94ea62ed.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.5bef8967.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4505.6dfaf853.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9380.fb176dee.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.dc8dbee4.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.933c1c9a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.68bc318b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3045.1cc3d8cb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.3329b100.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.a4ecfb83.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6428.36238b5a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6199.6da73f3b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.7d9f7f3d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.67eb283b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.8aa8d357.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4492.0c3e1a1d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2571.6814b962.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.1c286b32.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6128.f8800a13.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2135.2e8dc177.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.60bcefe8.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/144.86429b48.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5240.6281357f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8819.c627c2bf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.d0637ed0.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c3ee9367.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.0d800846.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.18a8996d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.e1e580cb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/responses.editor.e89462cb.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9134a7f08a369c6e',t:'MTczOTc4MzU0OS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10