all(72)
-
[AOS] PackageInfo #move other app
안드로이드 11(API 30)부터 앱의 패키지 공개 상태를 지정해주어야 접근이 가능하다. try { val packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES) NLog.i("packageInfo") if (packageInfo != null) { this.appExistText.text = "true" } } catch (e: PackageManager.NameNotFoundException) { NLog.e(e.stackTraceToString()) } 현재 계속해서 에러를 뿜고 있지만, 해당 앱의 Manifest.xml에 타겟 앱의 쿼리를 추가해주면 특정 패키지 조회가 가능하다. 또는 모든 패키지를 조회하고 싶은 경우..
2024.02.08 -
[Flutter] Lifecycle
Everything is a Widget ! StatelessWidget : constructor → createState() StatefulWidget : initState → didChangeDependencis → dirty → build → clean(:setState → dirty) → deactivate → dispose didUpdateWidget : StatefulWidget의 매개변수가 변경된 경우 실행됨 웹뷰를 띄운 상태였고 release인데 흰 화면이 표출되었다. 아무래도 UI 재가동이 필요해보였고 시점을 알기위해 Lifecycle을 사용해야했다. WidgetsBindingObserver를 사용한다. class _HomeScreenState extends State with Widge..
2024.02.07 -
[AOS] RecyclerView
RecyclerView는 여러 아이템을 리스트 형태로 보여주는 뷰이다.모든 아이템을 한 꺼번에 로드하여 가지고 있는 것이 아닌 필요한 양 만큼 갱신하여 보여주는 것이 특징RecyclerView를 현재 Compose에서는 좀더 편리하게 구현을 하고 있다고는 하나,나는 원래 사용하던 구조가 더 명확히 분리되어 있어 이전 방법을 애용한다. 언어 : Kotlin 1. Layout내부에 RecylcerView를 만든다 그럼, 화면에 다음과 같이 생성된다. 2. RecyclerView에 들어갈 리스트 아이템의 레이아웃을 만든다. 아이템에 카드를 넣고 리플(Ripple)효과 첨가 화면에 보여줄 레이아웃 준비는 끝. 코드 작업- RecyclerView 리스트 내부 아이..
2024.02.06 -
[AOS] Timer
타이머와 카운트 선언 private var timer: Timer? = null private var count: Int = 0 타이머 동작시 작업할 타이머 테스트(TimerTask)선언 private val timerTask: TimerTask = object: TimerTask() { @SuppressLint("MissingPermission") override fun run() { NLog.i("timerTask.. count:${++count}") bluetoothAdapter?.let { if (!it.isDiscovering) { timer?.cancel() NLog.d("timerTask.. bluetoothAdapter.isDiscovering:${it.isDiscovering}") } }..
2024.02.06 -
[AOS] lazy init binding
[app/build.gradle] android { buildFeatures { viewBinding = true } dataBinding { enable = true } } [MainActivity.kt] private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) }
2024.02.05