개발/Android(48)
-
DI(종속 항목 삽입)
MVVM을 언제까지 외워서만 할 순 없다..... DI가 신기술은 아니고, 그래서 기술 리뷰로 들어가서도 안 되는 것 같지만 일단 여기 말곤 쓸 데가 없으니 메모한다. DI (종속 항목 삽입) / (의존성 주입) : 외부에서 의존 객체를 생성하여 넘기는 것 1. 의존성 파라미터를 생성자에 작성하지 않아도 되므로, 플레이트 코드를 줄일 수 있음. 2. Interface에 구현체를 쉽게 교체하면서 적절한 행동의 정의가 가능. 테스트 유용해짐. 대충 이래서 쓴단다. 근데 뭔 말인지...잘 모르겠다. 그래서 예시를 보기로 했다. 아래는 종속 항목 삽입이 되지 않아 문제가 발생할 가능성이 있는 코드이다. class Car { private val engine = Engine() fun start() { engin..
2022.05.12 -
화면 회전시 이전 데이터 유지하기
코드 지워야돼서 기록한다 원하는 액티비티에 이거 추가 android:configChanges="orientation"(in Menifest) 이런 식으로 데이터 고정 뿐만 아니라, 회전 후에 새로운 화면을 적용한다든지 새로운 액션이 필요하면 override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT // 가로 전환시 || newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ) { // 세로 전환시 binding..
2022.04.21 -
BroadCastManager로 이벤트 수신하기
또 까먹을까봐 우당탕탕 쓰러왔다. 여담이지만 최초 기획자도 내가 아니고, 설계자도 아니고, 최초로 구현한 사람도 내가 아닌 어플의 이슈를 대응하다보면... 한번에 클린코드가 나오기 어려운것 같다. 그래서 개판으로 짜고있음 ㅇㅅaㅇ근데 우짜겠노 급한데 나중에 리팩토링 하거나 해야지 뭐... 어쨌든 오늘은 특정 이벤트 발생 즉시 다른 액티비티에서 이를 감지하고 뷰를 전체적으로 갱신하는 로직이 필요했다. 안드로이드 개발자라면 다 아는 4대 컴포넌트...중 하나인 BroadcastReceiver를 이용해 구현하기로 한다. 1. 이벤트 보내는 함수 등록 private fun sendIntent(){ val intent = Intent(EVENT_NAME) LocalBroadcastManager.getInstanc..
2022.03.25 -
비동기처리에서 특정 기능들만 순서대로 처리하기
업데이트 쳐내느라 새로 알게된거 하나도 정리 안 했다..ㅎ 어쨌든 대충 테스트배포 끝냈으니 기억을 위해 기록한다. 적어도 통신을 이용하는 어플리케이션을 개발하다보면, 통신에 관련된 것을 전부 비동기로 처리하게 된다. 당연함....동기로 하면 괴오래걸림;; 그러나 가끔은 몇 개를 순서대로 처리해야 할 일이 생긴다. 예를 들면 뭐 1번의 값을 받아온 후에 2번이 돌아가야한다던지... 그럴때를 위한 기능들이다. 1. withContext : 해당 작업을 끝낼 때 까지 코루틴을 일시정지하기 위해 사용한다 - async와 동일한 결과값을 반환한다 - async{ }.await() 과 유사 - 코루틴 내부나 susfend 함수 안에서 구현이 가능 - 콜백이 필요 없이 코드의 쓰레드 풀을 제어할 수 있기 때문에 네트..
2022.03.23 -
AccessibilityService()로 다른 앱 접근 막기
배운 내용 정리를 위해 기록한다. 시스템을 개발하다보면, 서비스를 통해 어떤 기능이나 개념을 구현해야할 때가 있다. 오늘은 accessibilityService로 접근성을 얻어 다른 앱을 차단하는 기능을 구현해보겠다. 우선 서비스는 무엇일까? 모바일을 개발하는 개발자라면 모두 알 것이라고 생각하는 Android 4대 컴포넌트(Activity, Service, BroadcastReciever, Contents Provider) 중 하나이다. 주로 백그라운드에서 지속적으로 돌아가는 동작을 제어한다. 이 서비스를 이용해서 다양한 백그라운드 프로세스를 만드는데, 오늘은 그 중 하나인 AccessibilityService로 제어 프로세스를 만들고자한다. 요 AccessibilityService는 이름에서도 알 수..
2022.01.13 -
ViewBinding / DataBinding
배운 내용 정리를 위해서 기록한다. 우선 Kotlin / Java 기반 프로젝트들은 1. XML 2. Source File 로 나뉘어져서 구성되게 되는데, 문제는 이 나눠진 뷰와 소스들을 합쳐주기 위해 binding 작업이라는게 필요하다는 것이다. 기본적으로는 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var txt = findViewById(R.id.txt) var btn = findViewById(R.id.btn) btn.setOnClickListener { //click 이벤트 } } 요런식으로 Id값을 찾는 메소드인..
2022.01.12