전체 글 (52) 썸네일형 리스트형 20.12.03(목) TIL - FCM 푸시가 왔을 때 액티비티에서 이벤트 처리하는 법 요구사항 FCM 푸시알람이 오면 사용자가 알람을 클릭하지 않더라도 액티비티가 이동한다. 문제해결과정 LiveData를 사용하는 것까지는 좋았는데.. FirebaseMessagingService 클래스 내부에 public 으로 변수를 선언해도 접근이 안 되었다. 열심이 구글링한 결과 핵심은 싱글톤!! 싱글톤 클래스에 livedata를 선언해야 서비스 클래스와 액티비티(프래그먼트) 클래스 모두에서 접근이 가능했다. 구현내용 1. LiveData를 포함한 싱글톤 클래스 Event를 생성한다. object 키워드로 클래스를 정의하면, 싱클톤 패턴이 적용되어 객체가 한번만 생성된다. 2. FirebaseMessagingService 클래스의 onMessageReceived 메소드에 값을 업데이트해준다. onMes.. [git] 여러 개의 원격 저장소 연결하기 A에 있는 프로젝트를 B에도 저장하고 싶을 때 1. 새로운 저장소를 추가해 준다. git remote add "B저장소이름" "주소" 2. 원격 저장소 목록 확인 git remote -v 3. orgin에 있는 소스를 새로운 저장소로 push git push "B저장소이름" master [RxJava] 리액티브 프로그래밍(Reactive Programming)이란? RxJava는 자바에서 리액티브 프로그래밍을 구현하는데 사용하는 라이브러리이다. 따라서 RxJava를 이해하기 위해 리액티브 프로그래밍이 무엇인지 알아보자! 리액티브 프로그래밍(Reactive Programming)이란? - 데이터를 통지하는 생산자를 생성하고, 통지한 데이터를 소비자가 받아 처리하는 방식 - 데이터가 통지될 때마다 관련 프로그램이 반응하여 데이터를 처리하는 프로그래밍 방식이다. 예를 들어 GPS 위치 정보가 변경될 때의 상황을 가정해보자. 이동하여 위치 정보가 변경될 때마다 데이터를 전송하고 이동을 멈추면 데이터 전송도 중지하는 것처럼 생성되는 데이터를 한 번에 보내지 않고 각각의 데이터가 생성될 때마다 순서대로 보낸다. 이러한 데이터 흐름을 데이터 스트림이라고 한다. - 데이터 스트림.. [Android][Error] java.lang.IllegalStateException: Not allowed to start service Intent startService() 이 코드에서 에러가 났다. 개발자 문서를 보면 아래와 같은 설명이 있다. developer.android.com/about/versions/oreo/background?hl=ko#services 백그라운드 실행 제한 | Android 개발자 | Android Developers Android 8.0 이상을 대상으로 하는 앱에 대한 새로운 백그라운드 제한. developer.android.com - 앱이 백그라운드에 있는 동안 포그라운드 서비스를 생성해야 하는 경우, startService() 대신 startForegroundService() 메서드를 사용하세요. - 사용자가 인지할 수 있는 서비스의 경우에는 포그라운드 서비스로 만들어야 합니다. 예를 들어, 오디오를 재생하는 서.. [철학] 명상록 - 마르쿠스 아우렐리우스 마르쿠스 아우렐리우스는 로마황제이자 스토아철학자인데 이 책은 그가 전쟁터에서 쓴 일기이다. 철학서로 분류되어 있지만 사실 아포리즘으로 가득찬 자기계발서 같기도 하다. 개인 내면으로 깊게 파고들어 인간 실존의 질문들을 던지는데.. 자기 전에 아무곳이나 펼쳐서 읽기 딱 좋다. 많이 읽을 필요도 없고 그 날 마음에 와닿는 문장 하나만 골라 음미하면서, 명상록이라는 이름답게 나의 감각과 부유하는 생각들에 조용히 집중하다가 잠들면 최고다. 고등학교 윤리와 사상 시간에 스토아학파 배울 때는 금욕주의라는 키워드 때문에 재미없다고 생각했는데.. 조금 커서 보니 그 금욕이라는 것의 의미가 달리 보인다. 감정이나 외부에 흔들리지 않고 오롯이 나에게 집중하는 초연한 상태를 추구하는 것이 불교의 수행과도 맞닿아 있는 것 같고.. [Android][Error] MutableLiveData의 setValue와 postValue의 차이 (IllegalStateException: Cannot invoke setValue on a background thread) 공통점 - MutableLiveData의 값을 변경시킬 수 있는 메소드 차이점 setValue() - 값을 set하는 메소드이다. livedata를 구독하고 있는 액티브한 옵저버가 있을 때 setValue()로 값을 변경해주면 옵저버에게 전달(dispatch)된다. - 메인 스레드에서 호출되어야 한다. postValue() - setValue처럼 값을 바로 set하지 않고 주어진 값을 set하라는 task를 메인스레드에게 전달해준다. - 백그라운드에서 진행된다. - 따라서 postValue한 다음 바로 getValue를 호출할 경우 변경된 값을 받아오지 못할 수도 있다. developer.android.com/reference/androidx/lifecycle/MutableLiveData#postValu.. [Android] NDK를 이용하여 C/C++ 를 추가 2020 네이버 테크 콘서트 강의를 요약 정리해 보았다. # NDK란? - JNI를 이용하여 안드로이드에서 네이티브 코드를 구동할 수 있게 해주는 development kit - 다양한 아키텍처에 대한 cross compiler를 가능하도록 하는 것이 핵심 기능 - 이외에도 안드로이드 SDK를 지원하기 위한 시스템 헤더 및 라이브러리 제공 # NDK 사용하는 이유 - 성능 - 딥러닝 추론, 이미지 처리 등 높은 성능을 필요로 하는 경우 - 딥러닝 프레임워크는 NDK 사용하여 빌드 (tf-lite, onnxRuntime) - 코드 재사용 - C++모듈을 aOS iOS 동시 사용 가능 - 하드웨어 제어 # NDK 단점 - 이식성 결여) 언제나 모든 플랫폼에서 사용 가능한지를 체크해야 한다 - 안정성 결여) .. 20.09.11(금) TIL 1. 락커가 잠겼는데 서버에 이용시작 등록이 되는 경우가 있고, 락커가 열렸는데 서버에 이용시작 등록이 되지 않는 경우가 있다. 후자의 경우 무료로 자전거를 이용하게 되므로 큰 문제이다! 일단 블루투스의 연결상태나 송수신 상태를 잘 파악하고 에러 처리하는 게 중요하다. 일단 세세하게 에러 상황을 나누어 보았다. 1) 블루투스 연결 실패시 2) 연결 성공후 데이터 전송 실패시 3) 데이터 전송 성공후 수신실패시 1은 현재 여러가지 상황에서 에러처리하고 있고 사용자에게도 블루투스 연결이 안된다고 안내가 간다. 2는 throwable로 에러를 받아 로그를 찍고 있다. 3도 연결이 된 이상 송수신은 문제가 없이 데이터 전송하면 거의 0.3초만에 응답이 왔다.. 2,3은 지금까지 개발하고 테스트하면서 발생한 적은.. 이전 1 2 3 4 ··· 7 다음