분류 전체보기
-
Android) LiveData, MutableLiveData 특징과 차이점Android 2020. 8. 4. 16:00
Live data life cycle의 생명주기를 따릅니다. LifecycleOwner의 상태가 STARTED와 RESUMED로 활성화 상태일 때만 옵저버에게 데이터 변화를 알려줍니다. 상태가 Destroyed 변경되면 자동으로 live data도 소멸 -> memory leak등의 문제 신경 안써도됩니다. ViewModel에서 사용되도록 설계되었으므로 액티비티, 프래그먼트가 재실행해도 ViewModel은 소멸되지 않으므로 LiveData 또한 소멸 되지않습니다. 또한 life cycle이 활성화 되었을때만 데이터 변화 알려주므로 형식적인 코드(boiler plate)가 줄어듭니다. MutableLiveData LiveData를 상속하고 LiveData.setValue와 LiveData.postValue..
-
Android) AAC - ViewModel 예제Android 2020. 8. 4. 15:42
ViewModel 우선 MVVM 패턴의 ViewModel과는 다른 개념입니다. MVVM의 ViewModel은 마이크로소프트에서 처음 발표했는데, 모델과 뷰 사이의 데이터를 관리하고 바인딩 해주는 역할을 합니다. 구글에서 발표한 AAC(Android Architecture Component)의 ViewModel은 아래 사진과 같이 액티비티의 생명주기에 분리시켜 ViewModel Scope의 생명주기를 따릅니다. Activity 재생성, Rotation 같은 Configuration 변경에 영향을 받지 않습니다. ViewModel은 View에 대해서 알지 못하며 UI에 독립적이라고 볼 수 있습니다. 그래서 액티비티가 재실행되어도 데이터가 소멸되지 않습니다. 가장 좋은 예제로 안드로이드의 상태 변경의 예제를 ..
-
git) git flow 사용법Git 2020. 7. 31. 20:06
git flow란 ? feature - develpo - release - hotfixes - master 단계로 branch를 나눠서 코드를 관리하는 전략입니다. 이를 사용자가 쉽게 접근하고 사용할수 있도록 확장 기능(명령어)를 제공하는 것이 gitflow입니다. git flow 사용 방법 1. cd [자신의 프로젝트] ex) cd AndroidStudio/My-Application 2. git flow init 또는 git flow init -d 3. 2번에서 Fatal: Working tree contains unstaged changes Aborting 이 발생했을 경우 -> git flow는 변경된 파일이 없는 상태에서 초기화 해주어야 하므로 git stash(변경된 기능 임시 저장) 후에 gi..
-
Android) Kotlin에서 TextView 색상 바꾸기Android 2020. 7. 29. 16:06
보통 클릭 같은 이벤트를 주었을 때, textView의 색상을 바꾸고 싶어서 아래와 같이 코드를 작성했습니다. 하지만, 색상이 변하지 않았습니다. 두번째 방법으로 안드로이드에서 제공하는 컬러를 가져와서 변경을 시도했을 때, 색상의 변화가 있었습니다. 하지만 안드로이드에서 제공하는 컬러말고 내가 원하는 컬러나, 커스텀 컬러를 사용하고 싶을 땐 어떻게 해야 할까요? 아래와 같은 코드를 작성하면 가능합니다. getColor의 인자로 context를 주고, 뒤에 원하는 색상을 넣으면 됩니다.
-
Android) WebView 에러 net::ERR_CLEARTEXT_NOT_PERMITTEDAndroid 2020. 7. 16. 18:40
안드로이드에서 웹뷰를 띄우고 웹뷰의 다른 경로로 이동할 때 흔히 발생하는 에러입니다. 1. res/xml/network_security_config.xml 추가 첫번째 방법은 웹뷰를 검색하고 싶은 도메인을 지정하는 방법입니다. -> 위의 xml을 추가해준 다음 manifest의 application에 networkSecurityConfig로 xml을 추가해줍니다. cleartextTrafficPermitted 속성이 true일 경우 동작을 합니다 2. AndroidManifest.xml 에서 application 의 usesClearTextTraffic 속성 추가. -> 첫번째 방법 같은 경우 일일이 도메인을 지정해줘야 해서 귀찮기 때문에, 모든 URL을 허용하는 방법입니다. 참고로 minSdkVesri..
-
Android) Glide Module 에러 대처법Android 2020. 7. 15. 19:32
Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored mvvm 패턴으로 Data Binding으로 코드를 작성중에 위와 같은 워닝이 나왔습니다. 앱은 실행이 되지만, 저런 워닝이 뜨면 왠지 없애고 싶은 생각이 듭니다. 우선 builde.gradle 에 glide와 관련된 gradle을 추가..
-
JAVA) copyOf() 메소드, copyOfRange() 메소드 비교Java 2020. 7. 14. 11:51
copyOf() 메소드 copyOf() 메소드는 전달받은 배열의 특정 길이만큼을 새로운 배열로 복사하여 반환. copyOf() 메소드는 첫 번째 매개변수로 원본 배열을 전달받고, 두 번째 매개변수로 원본 배열에서 새로운 배열로 복사할 요소의 개수를 전달받고 원본 배열과 같은 타입의 복사된 새로운 배열을 반환. 이때 새로운 배열의 길이가 원본 배열보다 길면, 나머지 요소는 배열 요소의 타입에 맞게 다음과 같은 기본값으로 채워집니다. ex) int[] arr1 = {1, 2, 3, 4, 5}; ① int[] arr2 = Arrays.copyOf(arr1, 3); for (int i = 0; i
-
JAVA) List 와 ArrayList 차이Java 2020. 7. 13. 17:28
문득 List와 ArrayList의 차이점이 궁금해서 검색을 해봤습니다. List = 인터페이스 ArrayList = 클래스 List는 interface다. interface는 공통되는 메서드를 추출해 놓은 클래스로 생각하면 된다. 즉 범위로 생각하면 List 안에 ArrayList, LinkenList...등이 포함되어 있다. 대부분 이런식으로 차이점을 소개한 글이어서, 뭔가 궁금한 부분을 확실히 해소해주지 못하는 느낌이었습니다. 그래서 List와 ArrayList의 차이점이 뭔데!? ArrayList list = new ArrayList (); List list = new ArrayList (); 위의 두 코드의 차이는 무엇일까요. 2가지 모두 같은 결과를 도출합니다. 하지만 List를 사용해 Arr..