목록Android (90)
막무가내 삽질 블로그
앱 뿐만 아니라 모든 프로그램에서 비동기 처리는 굉장히 중요하다. 안드로이드에서 여러 비동기를 할 수 있는 메커니즘을 제공하지만 일부 메커니즘에는 굉장히 큰 러닝커브가 있다.(대표적으로 RxJava) JetBrains에서 코루틴이라는 비동기처리를 할 수 있는 API를 만들었다. 코루틴이 나오기 전 가장 핫한 키워드는 rx programming 이였을 것이다. 그러나 구글이 안드로이드 공식 언어를 자바에서 코틀린으로 변경한 이후에 대표적인 샘플 예제들인 blueprint와 snowflower 비동기 처리를 coroutine으로 바꿨다. 코루틴에 대한 영어자료도 최근에 많이 올라 오고 있고 외국 안드로이드 개발자는 코루틴을 많이 사용하고 rx에서 코루틴으로 넘어가고 있다고 들었다.(한국은 rx가 많이 사용중..
안드로이드 스튜디오에서 shift 두번 눌러서 plugins 검색 후 adb wifi 검색 android wifi adb install 후 restart 터미널에서 안드로이드 플랫폼 툴이 설치된 경로로 이동 (경로 확인은 tools - sdk manager 클릭 후 android sdk location 확인) 단말기 연결되어 있는지 확인 ./adb devices 하면 연결된 디바이스 나옴 네트워크 모드로 변경 ./adb tcpip portnumber -> 포트번호 지정 (ex ./adb tcpip 5555) 단말기에 할당된 ip 확인 (설정 네트워크 들어가서 확인)후 연결 ./adb connect ip connected to ip:포트번호 가 나오면 연결 성공, 실패가 뜨면 몇 번 재시도하면 연결된다. ..
xd 에서 이미지를 클릭 후 command + e 클릭 후 내보내기 대상에서 안드로이드 선택 후 해당 프로젝트 위치를 찾아 res 까지 위치를 찾은 후 확인 하면 해상도별 이미지폴더가 생기면서 이미지가 옮겨진다... 오호 신세계~
앱이 포그라운드인지 백그라운드 인지 상태를 확인해서 이벤트 처리를 해야할 상황이 있었다. 예전 프로젝트에서는 액티비티에서 확인을 해서 로직을 처리했는데 이번에는 조금 더 수월하게 AAC 라이브러리를 활용하였다. gradle 에 추가해 준다. implementation 'android.arch.lifecycle:extensions:2.2.0' 그 다음 LifecycleObserver 를 상속 받은 후 ProcessLifecycleOwner를 등록해 주고 어노테이션을 활용해 함수를 만들어서 사용하면 된다. 개발자 문서를 참고하면 된다. 전체코드 class TestActivity : TLSActivity(), LifecycleObserver { override fun onCreate(savedInstanceS..
기존에는 날짜를 저장할 때 string으로 저장했었다. 다시 불러올 때 timestamp로 변환해 현재 날짜와 비교해서 로직을 처리 했었다. 하지만 중복되는 코드를 볼 수 있었고 또한 룸에서 가져올 때 ORDER BY time DESC 했었을 때 문제점은 12시가 제일 높게 인식한다. (yy-mm-dd hh.mm.ss a 기준) 이 문제를 해결 하기 위해 long 타입으로 넣으면 간단하게 해결할 수 있었고 코드중복을 줄일 수 있었다. 기존 테스트 코드 private lateinit var local: String // 오늘 fun main() { getTime() // 현재 날짜 가져오기 val today = SimpleDateFormat("yy년 MM월 dd일", Locale.KOREA) val dat..
코드랩과 구글문서를 참조했다. 안드로이드에서 아키텍처 구성요소 해당 예제는 Room, ViewModel, LiveData, Repository 만 사용합니다. Entity : Room 작업시 데이터베이스 테이블을 설명하는 클래스 DAO : 데이터 접근 객체, SQL 쿼리를 함수에 매핑, DAO를 사용할 때 함수를 부르고 나머지는 room에서 처리한다. ROOM : SQLite 데이터베이스에 대한 액세스 지점 역할을 한다. Repository : 여러 데이터 소스를 관리 하는데 사용된다. ViewModel, LiveData : https://class-programming.tistory.com/75 안드로이드 아키텍처 구성요소를 사용하여 단어장 앱을 만든다. Entity 만들기 @Entity(tableNa..
개발자 문서, 유튜브, 코드랩을 참고했다. ViewModel ? AAC ViewModel은 UI관련 데이터를 저장하고 관리하기 위하여 설계된 뷰모델클래스이다. ViewModel의 LifeCycle은 액티비티가 onCreate되고 onDestroy될 때까지 존재한다. 앱이 회전 할 때와 같이 액티비티가 여러번 호출 될 수 있지만(onCreate) ViewModel은 계속 유지된다. 장점 : 싱글톤 객체처럼 사용가능하다, 프래그먼트 중개자로 액티비티를 사용하지 않아도 된다, 화면 회전 문제 주의사항 : ViewModel 내부에 액티비티,프래그먼트,뷰에 대한 Context를 저장해서는 안된다. (Application Context제외) LiveData ? LiveData는 LifeCycle의 Observer다..
안드로이드 개발자 문서, 코드랩, Developing을 참고했다. AndroidX의 Navigation은 UI 전환을 쉽게 구현하는데 도움을 주는 라이브러리이다. Navigation 에서는 이전 Destination(Fragment) 이 포함된 백스택을 자동으로 관리한다. 앱을 열때 첫 화면이 백스택에 배치되고 그 후 Navigate()를 실행 시켜 화면을 이동할 때 마다 백스택 맨위에 해당 Fragment가 놓여진다. (LIFO구조) 이전(뒤로가기) 기능 시, 스택의 맨위의 Fragment를 제거함으로 바로 이전의 Fragment가 호출된다. res-navigation-navigation.xml MainActivity (NavHost) class MainActivity : AppCompatActivit..