본문 바로가기

프로그래밍 놀이터2049

[android] FileProvider 에 알아보자 - FileProvider 는 ContentProvider 의 subclass 로 secure 한 file share 를 관장한다. 이를 통하면 file:/// 형태의 uri 대신 content:// 형태의 uri 를 사용하게 된다. - content URI 는 read, write access 를 임시 permission 으로 부여할 수 있다. content uri 를 가진 Intent 를 통해 타앱에 정보를 보낼 때에도 Intent.setFlags() 를 통해 permission 을 부여할 수 있다. 이 permission 은 전달받는 Activity 가 stack 에 존재할 때 가능하다. Intent 가 Service 로 전달될 때에는 해당 Service 가 running 하는 동안만 부여된 권한이.. 2021. 2. 16.
[android] WebChromeClient 의 file upload - WebView 기본 구현으로는 html 의 를 처리할 수 없다. - Webview 에서 file upload btn 이 클릭되었을 때 WebChromeClient 의 callback 이 불리게 되며, 여기서 param 으로 전달되는 callback 객체에 Uri 를 전달해주어야 file upload 를 시킬 수 있다. - 그럼 file upload btn 이 클릭되었을 때 어떤 callback 이 불리느냐? 이 부분은 직접 테스트한 것은 아니고, 인터넷 정보에 따르면... android 3.0 (HoneyComb) 미만에서는 아래 callback 이.. public void openFileChooser( ValueCallback uploadMsg) android 3.0 이상 ~ 4.1( JB ) 미만.. 2021. 1. 29.
[kotlin] LazyThreadSafeMode SYNCHRONIZED vs. PUBLICATION - lazy 함수의 기본 thread-safe 동작은 SYNCHRONIZED 이다. 즉 thread-safe 하다는 말이다. - SYNCHRONIZED 는 우리가 익히 알고 있는 동기화가 보장된 호출이다. 한 thread 에서만 접근할 수 있고, 해당 연산이 끝난 결과값을 다른 thread 에서 공유해서 사용하는 방식이 된다. - PUBLICATION 은 초기화 과정을 여러 스레드가 동시에 수행할 수 있으나, 다른 스레드에서 초기화하여 할당된 값이 있다면 그 값을 반환한다. 다시 말해 init 코드는 여러 번 탈 수 있으나 race condition 에서 한 thread 에 의해 최초 write 된 값을 모든 thread 에서 share 해서 사용하는 방식이 된다. - NONE 은 별도의 thread-s.. 2021. 1. 28.
[android] 국제화 text style 입히기 - Eng : Best practices for text on Android Es : Texto en Android: mejores prácticas 여기서 Text, Texto 에만 bold 처리를 하고 싶다면? - 간단한 styling 은 HTML tag 를 이용하자. Text 와 Texto 를 각각 tag 로 감싸고, setText(Html.fromHtml(…)) API 호출을 해주자. - HTML tag 로 해결하기 어려운 복잡한 케이스는 annotation 을 이용하자. strings.xml 에 태그를 사용하면 된다. custom key, value pair 를 xml 에 정의하고, annotation tag 를 사용할 수 있다. string resource 를 SpannedString 로 얻어.. 2021. 1. 27.
[android] finishAffinity() 와 finishAndRemoveTask() 에 대하여 with 실험 FinishAndRemoveTask - API Level 16 (Android 4.1, JB) 에 추가된 API 호출하는 Activity 기준 본인 포함 현재 task 의 '하단'에 있는 모든 Activity 를 종료시켜준다. - Activity Call Stack : A -> B -> C C에서 finishAffinity() 를 호출하면 A, B, C 가 모두 destroy 된다. - Activity Call Stack : A -> B -> C B 에서 handler 를 통해 delay 를 주면서 finishAffinity() 호출하면 A, B 가 destroy 되고 C 는 destroy 되지 않고 살아있는다. 호출하는 Activity 기준 '하단' 만 종료됨에 유의하자. - 참고자료 : https:/.. 2021. 1. 27.
[android] context 마스터 하기! - Context 는 Android API 중 가장 잘못 design 된 녀석이다. Android 에서 신과 같은 object 이다.. - Android 는 component 들을 갖고 있다. Activity, Service, BroadcastReceiver, ContentProvider. Android OS 자체도 component 들을 가지고 있다. WifiManager, Vibrator, PackageManager 등등.. 그리고 Resource 라는 녀석도 있다. Context 를 간단히 이야기하면 component 간의 다리 역할을 하는 component 이다. context 를 통해 component 간의 communication, instantiate, access 등을 할 수 있다. - C.. 2021. 1. 26.
[애자일] Scrum 개발방법론 - 애자일 소프트웨어 공학 중 하나. - 원칙 개발 주기마다 적용할 기능이나 개선에 대한 목록 작성 (Backlog 작성) 신규 기능, 기존 로직 개선점 ( 즉 할일 ) 등에 우선 순위 부여 개발 주기는 30일 정도로 조절하고, 개발 주기마다 실제 동작하는 결과 제공 일일 15분 정도의 회의 항상 팀 단위로 사고 원할한 의사소통 - 추가 사항 조직을 작게 만들며, 자기조직적인 팀(스스로 지원해서 조직되는 팀)이면 더 좋음. 개발 사항은 1~2시간 단위로 가능한 작은 단위로 만드는 것이 좋음. Sprint 결과를 리포트, 회고 함. - Scrum 팀 구성원의 추구 가치 확약 : 약속한 것은 확실히 실현한다. 전념 : 확약한 것에 전념. 정직 : 불리한 것도 숨기지 않는다. 존중 : 다른 사람에게 경의를 표.. 2021. 1. 24.
[android] ViewModel & LiveData 의 pattern & anti-pattern Views and ViewModels Distributing responsibilities -이상적으로 ViewModel 은 Android 에 대한 어떤 것도 알아서는 안 된다.이는 testability 를 늘려주고, 더 안전하며, module 화하기 편해진다.이를 가장 쉽게 확인할 수 있는 방법은 android.arch.* 외에는 android.* import 가 없어야 한다. -조건문, loop, 동작 결정 등은 Activity, Fragment 가 아닌 ViewModel 이나 다른 layer 에서 수행해야한다.View 는 어떻게 data 를 display 할지만 신경쓰고, user event 를 ViewModel 이나 Presenter 로 전달하는 역할만 해야 한다.이것이 Passive View p.. 2021. 1. 22.
[android] ViewModel 에 대해 알아보자 -ViewModel 은 activity 나 fragment 에서 사용되는 data 를 준비하고 관리하는 역할을 하는 클래스이다.이 녀석은 activity 와 fragment 를 비롯한 앱 전반과의 통신을 관리한다. -ViewModel 은 항상 fragment 나 activity 와 같은 scope 안에서 생성된다.그리고 scope 이 살아있는 동안 계속 유지된다.이 말은 Configutation change 로 인해 destory 되더라도, ViewModel 은 destroy 되지 않는다.새로운 owner instance (재생성된 Activity)는 존재하는(기존 Activity 에 의해 생성된) ViewModel 에 재연결된다. -ViewModel 의 목적은 Activity 나 Fragment 에서 .. 2021. 1. 21.
반응형