개발/Android(48)
-
Connectivity Manager
Connectivity Manager란Android 시스템 서비스네트워크 연결 상태에 대한 쿼리에 응답하는 클래스. 네트워크 연결이 변경되면 app에 알린다. 역할네트워크 연결 모니터링(WIFI, GPRS, UMTS)네트워크 연결 변경시 broadcast intent 전송네트워크 연결 끊긴 경우 페일 오버 시도앱이 사용 가능한 네트워크의 대략적 혹은 세분화된 상태를 쿼리하는 API제공App이 데이터 트래픽에 대한 네트워크를 요청하고 선택할 수 있도록 API 제공 클래스 얻기val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager 콜백voidonAvailable(Network network) 프레임워크가 연결되고 사용할 준비가 된 새 네..
2023.07.28 -
AAC
AAC(Android Architecture Components)Jetpack이 2017년도에 발표한 라이브러리. LifeCycles생명주기 모니터링을 도움Lifecycle OwnerLifecycle Observer LiveData관찰자(activity, fragment)의 생명주기를 알고있는 간단한 observable보통 viewModel과 같이 사용됨observable 패턴을 구현하기위해 사용됨수명주기를 수동으로 처리하지 않아도 되고, 메모리 누수도 사라짐 ViewModel수명주기를 고려해 ui관련 데이터를 저장하고 관리하도록 설계됨. 보존 가능한 이유; activity → LifecycleObserver(), fragment → FragmentStateManager 로 view의 lifycycle을..
2023.07.26 -
알아두면 좋은 Kotlin extension
💡자주 사용하는 extension들을 모아봤다 showToast()fun Context.showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } hideKeyboard()fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } loadUrl()fun WebView.loadUrl(url: String?) { if (!url.isN..
2023.07.26 -
Android Macrobenchmark
💡해당 내용은 성능측정 및 개선을 위한 macrobenchmark를 사용하는 방법이다 Jetpack Macrobenchmark앱의 성능을 측정 및 벤치마킹 하기위한 라이브러리이다. Android Studio에서 직접 결과를 제공하고, 결과를 JSON 파일에 기록한다. 로컬 측정 및 CI의 성능 테스트에도 모두 적합하다 프로젝트에 benchmark추가→ 최소 arctic fox 2020.3.1이 필요함 모듈 새로 만들기 모듈 템플릿에서 벤치마크로 생성벤치마크 모듈 유형으로 macrobenchamark를 선택벤치마킹의 최소 sdk는 android6(API 레벨 23)이상이 필요함 마법사는 아래와 같은 작업을 수행함매크로벤치마크용 모듈을 생성함. com.android.testdebuggable 을 false로..
2023.07.26 -
Baseline Profiles
Baseline Profiles란apk에 담기는 클래스와 메소드의 목록앱이 설치되는 동안 이 목록의 클래스와 메소드는 pre-compile된다. 이 결과물은 실행이 더 빠르다 → 앱 실행 시간과 jank(cpu의 초과 작업시간)감소 Baseline Profiles 만들기Jetpack Macrobenchmark 라이브러리를 사용해야 한다.BaselineProfileRule을 사용해서 테스트를 작성한다.rooted 기기 또는 구글플레이가 설치되지 않은 emulator에서 테스트를 실행한다.Test Results 패널에서 생성된 profiles 로그를 찾는다. 로그 예)To copy the profile use: adb pull "/sdcard/Android/media/com.example.macrobench..
2023.07.26 -
Fragment 에서 데이터를 주고받는 방법
CommunicatorFragment Interface 활용abstract class CommunicatorFragment : Fragment() { abstract fun processReceivedData(key: String, value: Any) // 보내는쪽 abstract fun registerDataCallback(callback: (key: String, value: Any) // 받는쪽 -> Unit) } fragment Apackage com.example.moduleA import com.example.utility.CommunicatorFragment ... class FragmentA : CommunicatorFragment(){ private lateinit var dataCal..
2023.07.26