전체 글27 [Kotlin] Null-Safety ?. !! ?: Kotlin의 특징 중 "Null-Safety한 언어" 라는 것이 있다. 일을 하며 ?. !! ?.let 등 여러 nullable한 값에 대해 처리를 했는데, 차이점을 모르고 그냥 사용한 것 같아 공식문서를 보고 각 연산자의 특징과 왜 Null-Safety 한 언어라고 하는지 알아보았다. 지금부터 그 내용을 정리하며, 블로그에 남긴다. NullPointerException 자바를 비롯한 대부분의 언어에서 흔히 볼 수 있는 에러는 NullPointerException 이다. Null을 참조하는 멤버에 접근하려고 했을 때 발생하는 에러이며, 공식문서에서는 NPE라고 하고 있다. kotlin에서 NPE가 일어날 수 있는 가능성은 다음과 같다. 1. 의도적으로 NullPointerException을 발생시킬때(.. 2023. 10. 23. [Android] onSaveInstanceState 사용하여 상태 유지하기 플레이스토어에서 앱을 다운로드 받아 사용할 때, 화면 방향을 바꾼다던지, 앱을 켜둔 상태로 다크모드를 킨다던지, 멀티윈도우로 전환한다던지 하는 행동을 하곤 한다. 이때 앱에서 표시하고 있는 데이터가 변경된다거나, 만약 게임을 하던 중 화면 방향을 바꿨는데 게임이 처음부터 시작된다면 이는 앱의 옳은 동작이 아닐 것이다. 하지만 우리가 직접 만들어본 앱은 어떤가? 리스트에 아이템을 추가하는 앱을 만들었다고 했을 때 화면을 돌려보면 그 아이템이 유지가 되는가? 아마 아닐 것이다. 왜 이렇게 되는지, 그리고 상태를 유지하는 방법에 대해 알아보자. 상태가 유지되지 않는 이유 Activity의 수명주기는 다음 그림과 같다. Activity 의 종료는 onResume() 상태에서 onPause, onStop을 거쳐 .. 2023. 9. 26. [Android] inflate 에 대해 알아보기 더보기 Android 앱 개발을 하다보면 Fragment 를 사용하거나, 하다못해 들어봤을텐데, 이런 형태일 것이다. override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_example, container, false) } 이 Fragment 의 onCreateView에서 return 하는 inflater.inflate... 대체 뭐길래 View 타입으로 반환되는 것일까? Fragment 는 추후에 좀 더 자세히 공.. 2023. 9. 20. [Android] Thread 기본 Thread..? 안드로이드 앱 개발 뿐만이 아니라 컴퓨터 언어로 무언가를 개발하는 모든 개발자들은 Thread에 대해 듣게 된다. 이 Thread 란 무엇일까? Process 와 Thread Process 는 간단하게 하나의 프로그램을 의미한다. 그리고 Thread는 이 Process 내에서 작업을 수행하는 주체이다. 아무것도 동작하지 않는 Process(프로그램) 은 프로그램이라고 할 수 없다. 아주 간단한 기능이라도 어떤 기능 한가지는 무조건 수행하는데, 이러한 작업은 Thread에서 수행한다. 따라서, Process에는 무조건 한개 이상의 Thread가 존재한다. 안드로이드 앱 개발에는 UI Thread(Main Thread)가 무조건 존재하고, 개발에 따라 다수의 Worker Thread 가 존.. 2023. 9. 15. [Android] RecyclerView 이해하기 (3) - 중복선택 방지, notifyDataSetChanged() 앞의 두 포스팅을 봐주세요 https://gangglion.tistory.com/8 [Android] RecyclerView 이해하기 (1) 안드로이드에서 다량의 데이터를 표시할때, 리사이클러뷰를 많이 사용한다. 그동안 아무생각없이 사용했던 리사이클러뷰에 대해 확실하게 정리할 것이다. 안드로이드 개발자 문서에는 다음과 gangglion.tistory.com https://gangglion.tistory.com/9 [Android] RecyclerView 이해하기 (2) - RecyclerViewAdapter 내부요소를 외부에서 사용하는 방법 지난번 포스팅에서 리사이클러뷰에 대해 정리하고 아이템을 넣어보았다. 이번 포스팅에서는 interface를 사용하여 Adapter에 있는 pos와 같은 값을 MainA.. 2023. 9. 7. Platform declaration clash: The following declarations have the same JVM signature 에러 Kotlin의 범위함수 apply에 대해 공부하면서 예제코드를 작성할 때였다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) applyFunction() } inner class Person(){ var name: String?= null var age: Int? = null fun getName(): String?{ return name } } private fun applyFunction(){ val person = Person().apply{ name = "ApplyTest" age = 1 }.getName() Log.d.. 2023. 9. 5. 이전 1 2 3 4 5 다음