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

APP17

[๋ถ€์ŠคํŠธ์ฝ”์Šค] ๋„คํŠธ์›Œํ‚น/HTTP ์†Œ์ผ“(Socket) ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฒฝ์œ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์˜ ์ ‘์†์  ์†Œ์ผ“์„ ํ†ตํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. ์„œ๋ฒ„ ์†Œ์ผ“์€ ์—ฐ๊ฒฐ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์€ ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋„คํŠธ์›Œํ‚น(Networking) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์˜์‚ฌ์†Œํ†ตํ•˜๋Š” ํ–‰์œ„ ๋‘ ๋Œ€ ์ด์ƒ์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ผ€์ด๋ธ”๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ ๋„คํŠธ์›Œํ‚น์€ ์‘๋‹ต์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ์„ ํ˜ธํ•˜๋ฉฐ, TCP/IP์˜ ํ†ต์‹ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋Š” ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐœ๋ฐœ HTTP ์›น ์„œ๋ฒ„๋Š” ๊ตญ์ œํ‘œ์ค€์— ๋งž๋Š” ํฌ๋งท์ธ HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ชฝ์„ ์˜๋ฏธํ•˜๋ฉฐ ์›น์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›๋Š” ์ชฝ์„ ์˜๋ฏธํ•˜๋ฉฐ .. 2020. 3. 5.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์Šค๋ ˆ๋“œ(Thread) ์Šค๋ ˆ๋“œ(Thread) ์–ด๋– ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ, ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. ๋™์‹œ ์ž‘์—…์„ ์œ„ํ•œ ํ•œ ๋‹จ์œ„ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ : ์•ฑ์„ ์‹คํ–‰ํ•˜๋ฉด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ, ์ด์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์€ ํ‘œ์ค€ ์ž๋ฐ”์™€ ๋™์ผํ•˜์ง€๋งŒ, ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์†Œ์Šค์™€ UI์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ธ๋“ค๋Ÿฌ(Handler)๊ฐ€ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ๋˜์–ด์•ผํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, UI๋‚˜ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์‹œ์Šคํ…œ์—์„œ ์–ด๋–ค ๊ฒƒ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•ธ๋“ค๋Ÿฌ(Handler) ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ํŠน์ • ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฏธ๋ž˜์˜ ์–ด๋–ค ์‹œ์ ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์Šค์ผ€์ค„๋ง ๊ฐ€๋Šฅ obtainMessage() ํ˜ธ์ถœ.. 2020. 3. 4.
[๋ถ€์ŠคํŠธ์ฝ”์Šค]์•ˆ๋“œ๋กœ์ด๋“œ ํƒญ(Tab) ํƒญ ๋ฒ„ํŠผ(TAB) ํƒญ์€ sdk๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ํƒญ์€ ์นด์นด์˜คํ†ก, ์ธ์Šคํƒ€๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ๊ณผ ๊ฐ™์€ sns์™€ ๋งŽ์€ ์–ดํ”Œ์˜ ํ™”๋ฉด ๊ตฌ์„ฑ์— ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ํƒญ์˜ ๊ตฌ์„ฑ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” activity๋ฒ„ํŠผ๊ณผ famelayout(ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ)์ด๋ผ๋Š” ์œ„์ ฏ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ์ „์ฒด์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฒ„ํŠผ ์„ ํƒ์‹œ, ํ•ด๋‹น๋˜๋Š” fragment๋ฅผ ๋„์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. MainActivity.java package com.example.actionbar_ex; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.ScrollingTabContainerView; import androidx.ap.. 2020. 2. 28.
[๋ถ€์ŠคํŠธ์ฝ”์Šค]์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋ž˜๊ทธ๋จผํŠธ(fragment),์•ก์…˜๋ฐ” ํ”„๋ž˜๊ทธ๋จผํŠธ(Fragment) ๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ™”๋ฉด์„ ๊ฐ€์ง€๋„๋ก ๋งŒ๋“ค๊ธฐ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ฐœ๋…์ด๋‹ค. ํ•˜๋‚˜์˜ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ ์—ฌ๋Ÿฌํ™”๋ฉด์„ ๋„์šฐ๊ณ  ์‹ถ์€ ๋‹ˆ์ฆˆ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ ๋‹ˆ์ฆˆ๋ฅผ ํ•ด๊ฒฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•ธ๋“œํฐ์˜ ํ™”๋ฉด๊ณผ ๋‹ฌ๋ฆฌ ์•„์ดํŒจ๋“œ๋‚˜ ํƒœ๋ธ”๋ฆฟ ๊ฐ™์€ ๊ธฐ๊ธฐ์—์„œ๋Š” ํ•œ ํ™”๋ฉด์— ํ•œ๋ฒˆ์— ๋ณด์—ฌ์ฃผ์–ด ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ง๊ณ ๋„ ๋ ˆ์ด์•„์›ƒ(layout)๊ณผ ์•กํ‹ฐ๋น„ํ‹ฐ(activity)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ ˆ์ด์•„์›ƒ์˜ ๊ฒฝ์šฐ ์ •์ ์ธ ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งŒํผ ์ด๋ฒคํŠธ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ด๋™๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ๊ฒฝ์šฐ ActivityGroup ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ค‘์ฒฉ ์‹œํ‚ด์œผ๋กœ์จ ํ™”๋ฉด ๋ถ„ํ• ์„ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ์ด ๋˜ํ•œ ์ค‘์ฒฉ๋œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ„์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๊ณ„๋‚˜ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ ์ธ.. 2020. 2. 27.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž/์œ„ํ—˜ ๊ถŒํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž(Broadcast Receiver) ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(Broadcast) : ๋ฐฉ์†ก์„ ํ•˜๋Š”๊ฒƒ ์˜ˆ) ์ฑ„ํŒ… ์•ฑ์—์„œ ์ผ๋Œ€์ผ ์ฑ„ํŒ…์„ ํ•  ๋•Œ ๋ฉ”์‹œ์ง€๋Š” ๋‘ ์‚ฌ๋žŒ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ›์ง€๋งŒ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ ํ•œ๊บผ๋ฒˆ์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๊ทธ๋ฃน ์ฑ„ํŒ…๋ฐฉ์„ ๋งŒ๋“ค์–ด ํ•œ ๋ฒˆ ์“ด ๊ธ€์„ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๋„คํŠธ์›Œํฌ๋ถ„์•ผ์—์„œ์˜ ์œ ๋‹ˆ์บ์ŠคํŠธ/๋ฉ€ํ‹ฐ์บ์ŠคํŠธ/๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์™€ ๊ฐœ๋…์ด ์œ ์‚ฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ… ๋ฉ”์‹œ์ง€๋Š” ์ธํ…ํŠธ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ ธ ์ „๋‹ฌ๋œ๋‹ค. ๊ฐ์ข… ์•ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์บ์น˜ํ•œ ํ›„, ๋ฆฌ์‹œ๋ฒ„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ณ , "๋ฐฉ์†กํ•˜๊ธฐ=>์ˆ˜์‹ ํ•˜๊ธฐ"์˜ ์‚ฌ์ดํด๋กœ ๋™์ž‘๋œ๋‹ค. ์ •์  ๋ฆฌ์‹œ๋ฒ„ ํ•œ ๋ฒˆ ๋“ฑ๋ก๋˜๋ฉด ํ•ด์ œ X ์•ฑ ์„ค์น˜์‹œ, ์ž๋™ ๋“ฑ๋ก ๋™์  ๋ฆฌ์‹œ๋ฒ„ ๋“ฑ๋ก, ํ•ด์ง€์˜ ์ž์œ  manifest์— ๋“ฑ๋กํ•˜์ง€ ์•Š๊ณ , ์†Œ์Šค์— ๋“ฑ๋ก์„ ํ•œ๋‹ค ์œ„ํ—˜ ๊ถŒํ•œ ๋งˆ์‹œ๋ฉœ๋กœ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๊ถŒํ•œ์„.. 2020. 2. 21.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์ธํ…ํŠธ(intent)๋ฅผ ์ด์šฉํ•œ ํ™”๋ฉด์ „ํ™˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ 4๊ฐ€์ง€ ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์„œ๋น„์Šค ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž ๋‚ด์šฉ ์ œ๊ณต์ž ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” UI๊ตฌ์„ฑ์„ ์œ„ํ•ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์š”์†Œ์ด๋‹ค. ํ™”๋ฉด์— UI๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ ํ•˜๋‚˜์˜ activity๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์ง€๋งŒ ์ž์ฒด์ถœ๋ ฅ๊ธฐ๋Šฅ์ด ์—†๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์€ ๋ทฐ(view), ๋ทฐ๊ทธ๋ฃน(viewgroup)์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” setContentView๋ฉ”์„œ๋“œ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์•ˆ์— ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค. ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ ์ถ”๊ฐ€ app์šฐํด๋ฆญ -> new -> activity onCreate() : ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ƒ์„ฑ, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”, setContentView().. 2020. 2. 18.
๋ฐ˜์‘ํ˜•