Android
-
[Android] Thread, Handler, Looper, Message Queue ๋ค๋ฃจ๊ธฐAndroid 2021. 11. 11. 03:13
Asynchronous Programming ์์ฆ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ๋ค์ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ์ด ๋ฉ๋๋ค. ์๋๋ก์ด๋์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ํ ๋ฐฉ๋ฒ์ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ณ๋์ Thread๋ฅผ ์์ฑํ์ฌ ๋์์ ์ผ๋ก ์์ ์ ์คํํ๊ฒ ํ๋ ๋ฐฉ๋ฒ๋ถํฐ AsyncTask, RxJava, RxKotlin, Coroutine ๋ฑ ํธ๋ฆฌํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ํ๋๊ณ ์์ต๋๋ค. ํ์ง๋ง ์๋๋ก์ด๋์์ ์ ๊ณตํด์ฃผ๋ Thread, Handler, Looper, Message Queue๋ฅผ ์ ๋๋ก ์๊ณ ์์ด์ผ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ๊นจ๋ซ๊ฒ ๋๊ณ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํธ๋ฆฌํจ์ ์ ์ ์์ ๊ฒ ๊ฐ์ ๊ณต๋ถ๋ฅผ ํ๊ฒ ๋์์ต๋๋ค. Thread ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์๋..
-
[Android] Activity๋? Activity LifeCycle ์๋ฒฝ ์ดํดAndroid 2021. 11. 3. 02:55
Activity๋? ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ํ ๋ฒ์ด๋ผ๋ ํด๋ดค๋ค๋ฉด Activity๋ ๋ฌด์กฐ๊ฑด ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ ๋ํ Activity๋ฅผ ์์ฃผ ์ฌ์ฉํ์ง๋ง ๊ตฌ์ฒด์ ์ผ๋ก Activity์ ์ญํ ์ด ๋ฌด์์ด๊ณ , LifeCycle์ ์๊ฐํด์ ๊ฐ๋ฐ์ ํ ์ ์ด ์์ ์ ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์์ง ์์ต๋๋ค. ์ค์ ๋ฉด์ ์์๋ ๋จ๊ณจ ์ง๋ฌธ์ผ๋ก ๋น ์ง์์ด ๋์ค๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ๊ณต๋ถํ๊ณ ์ ์ด ๊ธ์ ์ฐ๊ฒ ๋์์ต๋๋ค. ๋ณธ๋ก ์ผ๋ก ๋์๊ฐ์ Activtiy๋ ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ ์ค ํ๋๋ก ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ UI๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. ์๋๋ก์ด๋ ํฐ์์ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ๋ณด์ฌ์ง๋ ํ๋ฉด์ด ๋๋ถ๋ถ Activity๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์ข ๋ ์์ธํ ์ค๋ช ํ๊ธฐ ์ ์ Entry Point์ ๋ํด์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. โป En..
-
[Android] Robelctric Test๋Android 2021. 2. 17. 09:35
Android Test ์ฐธ์กฐ(https://meetup.toast.com/posts/187) Local Unit Test ํ ์คํธ ์คํ ์๊ฐ์ ์ต์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ ์คํธ์ธ ์ ๋ ํ ์คํธ๋ JVM์์ ์คํ๋ฉ๋๋ค. Unit Test๋ฅผ ์ํํ๊ธฐ ์ํด์๋ module-name/src/test/java ํด๋์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์๋๋ก์ด๋ ํ๋ ์์ํฌ ์ข ์์ฑ์ด ์๋ ํ ์คํธ ์ฝ๋์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ฝ Android ์ปดํฌ๋ํธ๋ค์ Unit Test ์ฝ๋์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํ ์คํธ๋ ์คํจํฉ๋๋ค. Unit Test์์ ์ฌ์ฉํ๋ ์๋๋ก์ด๋ ์ปดํฌ๋ํธ๋ค์ android-stubs-src.jar ํ์ผ์ ์ฐธ์กฐํ๋๋ฐ ์ค์ ์ด ํ์ผ๋ค์ ๋น ๊ป๋ฐ๊ธฐ๋ค๋ง ๋ชจ์ฌ ์์ด ์คํ๋ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด Instrumentation ..
-
[Android] Unit Test, JUnit4Android 2021. 2. 16. 23:52
Unit Test Unit Test๋ ๋ง ๊ทธ๋๋ ๋จ์ ํ ์คํธ๋ก, Test Driven Development๋ก ๊ฐ๋ฐํ๊ฒ ๋๋ฉด ๊ธฐ๋ฅ ๋จ์๋ณ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ๋ํ์ ์ธ Unit Test Tool๋ก JUnit์ด ์์ผ๋ฉฐ, ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ฉ ๋จ์ํ ์คํธ ํ๋ ์์ํฌ์ ๋๋ค. ์ฃผ๋ก ์๋๋ก์ด๋ ํ๋ ์์ํฌ์์ dependency๊ฐ ์๋ ํ ์คํธ ์ฝ๋์ ์ฌ์ฉ๋๋ฉฐ, ๋ก์ปฌ JVM์์ ์คํ๋ฉ๋๋ค. ๋ง์ฝ, ์๋๋ก์ด๋ ํ๋ ์์ํฌ์์ ๋ณต์กํ ์ํธ์์ฉ์ ํ๋ dependecny๊ฐ ์๋ค๋ฉฐ Robolectric ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ณ , ํ ์คํธ์ ์ต์ํ์ ์๋๋ก์ด๋ ํ๋ก์ ํธ์ dependency๋ผ๋ฉด Mockito์ ๊ฐ์ ๋ชจ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Gradle ์ค์ Unit Test์ ์์ค ํ์ผ์ module-nam..
-
[Android] ์๋๋ก์ด๋ ์คํ๋์ค NDK ์ฌ์ฉ๋ฒAndroid 2021. 2. 12. 07:41
NDK๋? ์๋๋ก์ด๋ ์คํ๋์ค์์ ๋ฐ์ดํธ ์ฝ๋๊ฐ ์๋ ๋ค์ดํฐ๋ธ ์ฝ๋(C/C++)๋ฅผ ์ฌ์ฉํด์ผ ํ ๋๊ฐ ์์ต๋๋ค. ์๋ฐ ์ด์ธ์ ๋ค์ดํฐ๋ธ ์ฝ๋(C/C++)์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ JNI(Java Native Interface)๋ผ๋ ์ธํฐํ์ด์ค๊ฐ ์์ด์ผ ํฉ๋๋ค. NDK(Native Development Kit)๋ ์๋๋ก์ด๋ ํ๊ฒฝ์์ JNI๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ตฌ์ฑ๋ ํคํธ์ ๋๋ค. NDK ์ค์น ์๋๋ก์ด๋ ์คํ๋์ค ์๋จ๋ฐ์ Tools -> SDK Manager๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ดํ Android SDK์ SDK Tools์์ NDK๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. Show Package Detail์ ๋๋ฌ ์์ธํ ๋ฒ์ ์ NDK๋ ์ค์น๊ฐ๋ฅํฉ๋๋ค. NDK ์์น ์ค์ ์๋๋ก์ด๋ ์๋จ๋ฐ์ File -> Project Structure๋ฅผ ํด๋ฆญํฉ..
-
[Android] Broadcast? Broadcast Receiver๋?Android 2021. 1. 8. 16:34
์ด ๊ธ์ ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ ์ค ํ๋์ธ Broadcast Receiver์ ๊ดํ ๊ธ์ ๋๋ค. Broadcast ๊ฐ์ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ Publish-Subscribe ํจํด๊ณผ ์ ์ฌํ๊ฒ ์๋๋ก์ด๋ ์์คํ ๋๋ ๋ค๋ฅธ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๋ฅผ ๋ฐ์ต๋๋ค. ์์๋ก ํด๋ํฐ์ด ์ผ์ง ๋, ํด๋ํฐ์ด ์ถฉ์ ํ ๋์ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ App์ ๋ฑ๋ก์ ํ๊ฒ ๋๋ฉด ์ด๋ฒคํธ ๋ฐ์ ์ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋ฉ๋๋ค. ์์คํ ์ ํน์ ๋ธ๋ก๋์บ์คํธ ์ ํ์ ๋ฐ์ App์ผ๋ก ๋ธ๋ก๋์บ์คํธ๋ฅผ ์๋์ ์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค. ๋ธ๋ก๋์บ์คํธ์ ์๋ตํ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ํ ๋ ๋จ์ฉํ์ง ์๋๋ก ์กฐ์ฌํด์ผ ํฉ๋๋ค. Broadcast ์ฌ์ฉ ๋งค๋ํ์คํธ ์์ ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ๋ฅผ ์ ์ธํฉ๋๋ค. ๋ธ๋ก๋์บ์ํธ ๋ฉ์์ง๋ Intent ๊ฐ์ฒด๋ก w..
-
[Android] Recycler View ์ฌ์ฉ๋ฒAndroid 2021. 1. 4. 21:49
์ด ๊ธ์ Recycler View ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ๊ธ์ ๋๋ค. RecyclerView ๋? RecyclerView๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐ ์ฌ์ฉ๋๋ View ์ ๋๋ค. ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์คํฌ๋ฆฐ์ ์๋๋ก ๋ด๋ฆด ๋, RecyclerView๋ view๋ฅผ ์์ ์ง ์๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค. ListView์์ Adapter์ getView ๋ฉ์๋์์ convertView๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ด ์ฌ์ฌ์ฉ์ ๋ง์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์ฑ์ ๋ฐ์์ฑ์ ํฅ์์ํค๊ณ ์๋น ์ ๋ ฅ์ ์ค์ผ ์ ์์ต๋๋ค. ์ฃผ์ ํด๋์ค RecyclerView ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๋ทฐ๋ฅผ ํฌํจํ๋ ViewGroup, view ์์ฒด๋ ๋ ์ ์์ด์ ๋ค๋ฅธ UI ์์์ฒ๋ผ ๋ ์ด์์ ๋ด์ ํฌํจ์ํฌ ์ ์์ต๋๋ค. ViewHolder ๋ฆฌ์คํธ ๋ด์ ๊ฐ ์..
-
[Android] java.lang.IllegalAccessException : is not accessible from java.lang.Class<android.app.Instrumentation>Android/Exception 2020. 10. 25. 18:47
์๋๋ก์ด๋ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. java.lang.IllegalAccessException : is not accessible from java.lang.Class ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ ์คํ๋์ ํ๋ฉด์ ๊ฐ๋ฐํ๋ ์ค์ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ์คํ๋์ ํ๋ฉด์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์๋ xml์ setContentView๋ฅผ ์์ฑํ๊ฑฐ๋, style๋ก theme๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. style์ theme๋ก ์์ฑํ๊ธฐ ์ํด์ ์๋ก์ด class๋ฅผ ๋ง๋ค ๋ public์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์, ์๋ก์ด class์ public์ผ๋ก ์์ฑํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.