๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Google IO 2023] Optimize activity-based apps for large screens / Activity Embedding ์„ค๋ช…

https://www.youtube.com/watch?v=zx20-3GSdHw 

 

Activity Embedding 

ํฐ ํ™”๋ฉด์„ ๊ฐ€์ง„ ๋””๋ฐ”์ด์Šค์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋ฒ ์ด์Šค๋กœ ํ•˜๋Š” ์•ฑ ํ™”๋ฉด๋“ค์˜ ์ตœ์ ํ™”๋ฅผ ๋•๋Š”๋‹ค.

๋‘ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ํฐ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ์—†์ด ํ•œ ํ™”๋ฉฐ์— ๋‚˜๋ž€ํžˆ ๋ณด์—ฌ์ค€๋‹ค.

 

๋‚ด๋ถ€ ๋™์ž‘

์ž๋™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค๋ฅธ์ชฝ ํ™”๋ฉดpresentation๊ณผ ์„ค์ •๋“ค์„ ์„ ํƒํ•œ๋‹ค. ๋Ÿฐํƒ€์ž„์—๋Š” ์ž๋™์œผ๋กœ ์œˆ๋„์šฐ ํฌ๊ธฐ ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•ด ํด๋”๋ธ” ํฐ์„ ์ ‘๊ฑฐ๋‚˜ ํŽผ์น  ๋•Œ ์˜ค๋ฅธ์ชฝ ๋ ˆ์ด์•„์›ƒ์„ ์ž๋™์œผ๋กœ ์žก์•„์ค€๋‹ค.

 

์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ธฐ๋ณธ์ ์ธ ์•กํ‹ฐ๋น„ํ‹ฐ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด๋‚˜ ์Šคํƒ๋“ค(์ฃผ์š” ์Šคํƒprimary stack, ๋ถ€์ฐจ ์Šคํƒsecondary stack)์„ ์ƒ์„ฑํ•œ๋‹ค. ๋ถ€์ฐจ ์Šคํƒ์€ ํ•ญ์ƒ ์ตœ์ƒ์œ„์— ์žˆ๊ณ , ์ฃผ์š” ์Šคํƒ ์œ„์— ์žˆ๋‹ค. ๊ธฐ๊ธฐ ํ™”๋ฉด์ด ์ž‘๋‹ค๋ฉด ๋ถ€์ฐจ ์Šคํƒ์˜ ํ™”๋ฉด์ด ๋ณด์ด๊ณ , ๊ธฐ๊ธฐ์˜ ํ™”๋ฉด์ด ์ถฉ๋ถ„ํžˆ ํฌ๋‹ค๋ฉด ๋‘ ์Šคํƒ์€ ํ•œ ํ™”๋ฉด์—์„œ ๋‚˜๋ž€ํžˆ ๋ณด์ธ๋‹ค.

 

 

๊ตฌํ˜„

 

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

1. XML ๊ตฌ์„ฑconfiguration ํŒŒ์ผ ์ž‘์„ฑ

2. Jetpack WindowManager API ์ด์šฉ

 

1. XML ๊ตฌ์„ฑconfiguration ํŒŒ์ผ ์ž‘์„ฑ

xml๋กœ ์–ด๋–ค ์•ฑ์˜ ํ™”๋ฉด๋“ค์ด ํ™”๋ฉด ๋ถ„ํ•  ์ž‘์—…์œผ๋กœ ์ œ์–ดํ• ์ง€, ๊ทธ ํ™”๋ฉด๋“ค์„ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ค„์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ทœ์น™๋“ค์„ configuration file๋กœ ์ž‘์„ฑํ•œ๋‹ค. 

 

์˜ˆ์‹œ ํ•˜๋‚˜

 

๊ธฐ๋ณธ ๋ถ„ํ• ์‹œ SplitPairRule์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋‚˜์„œ WindowManager๊ฐ€ ๊ธฐ์ž…๋œ ๊ทœ์น™๋˜๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค๋ฃจ๋„๋ก RuleController๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด RuleController๋Š” 1) xml configuration ํŒŒ์ผ๋“ค์„ parseํ•˜๊ณ  2) ์‹œ์Šคํ…œ์— ์ ์šฉํ•œ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋

 

2. Jetpack WindowManager API ์ด์šฉ

 

WindowManager dependency๋ฅผ ๊ธฐ์ž…ํ•œ๋‹ค. 

AndroidManifest ํŒŒ์ผ์— Activity embedding์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์„ ์•Œ๋ฆฐ๋‹ค.

 

 ์‚ฌ์šฉ๋ฒ•์€ WindowManager API ์„ค๋ช…์„ ๋ณด๋ผ๊ณ  ํ•˜๋”๋ผ.

 

๋‹ค๋ฅธ ๊ธฐ๋Šฅ

Nested splits

๊ณ„์ธต์ ์ธ ํƒ์ƒ‰์— ์œ ์šฉ

 

 

Horizontal splits

ํ™”๋ฉด๋“ค์„ ์œ„ ์•„๋ž˜๋กœ ๋ฐฐ์น˜. ํด๋”๋ธ” ๊ธฐ๊ธฐ์˜ ํ…Œ์ด๋ธ”ํƒ‘ ๋ชจ๋“œ์—์„œ ์œ ์šฉํ•˜๋‹ค.

 

Cross application activity embedding

Android 13๋ถ€ํ„ฐ ๋‹ค๋ฅธ ์•ฑ๋“ค ๊ฐ„ activity embedding์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ. ํ˜ธ์ŠคํŠธ ์•ฑ ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๋‹ค๋ฅธ ์•ฑ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ํ•œํ™”๋ฉด์— ๋„์šฐ๋Š” ๊ฒƒ์œผ๋กœ, ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์— ๋งŽ์€ ๊ถŒ๋ ฅ์„ ์ค€๋‹ค. ๊ทธ๋ž˜์„œ opt in ๊ธฐ๋Šฅ์œผ๋กœ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๊ณ , ์‚ฌ์šฉ์ž๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์—๊ฒŒ ์–ด๋–ค ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ embedded๋˜์–ด์•ผ ํ•˜๋Š” ์ง€ ์•Œ๋ ค์•ผ ํ•œ๋‹ค.