String packageName = getPackageName(); try { // 패키지 정보 가져오기 PackageManager packageManager = getPackageManager(); // 패키지의 사용 퍼미션 목록 가져오기 String[] permissions = packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS).requestedPermissions; if (permissions != null) { // 사용 중인 퍼미션 목록 출력 또는 다루기 for (String permission : permissions) { System.out.println("사용 중인 퍼미션: " + permission); }..
Dependency injection이란? 정의 : 의존성 주입의 줄임말 요약 : 필요로 하는 의존성을 외부(생성자, 파라미터 등)에서 전달받는것 안하면 안좋은 점 : 코드의 유연성과 확장성이 떨어짐 또한 기능 및 코드 변경 할 때 많은 코드를 수정해야 함 하면 좋은 점 : 안좋은점의 반대, + 테스트 코드 작성에 용이함 dagger 예제 1. @Component interface정의 2. 의존성 주입할 module 정의 3. 데이터 가져올 ApiService 정의 4. 의존성 주입 * DaggerAppComponent는 Dagger lib에서 자동으로 생성되며, 이름 규칙은 "{Dagger$@ComponentInterfaceName} --------------------------------------..
private val autoRotateObserver = AutoRotateObserver(this, listener) contentResolver.registerContentObserver( Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION), true, autoRotateObserver ) override fun onDestroy() { super.onDestroy() contentResolver.unregisterContentObserver(autoRotateObserver) } class AutoRotateObserver(context: Context, listener: RotateConfigEventListener) : Cont..
class MainViewModel(val app: Application) : AndroidViewModel(app) { val tagtag = "tag@" val retrofit: RetrofitApi = RetrofitBuilder.getApiService("https://api.bithumb.com/") init { initCoinRx() initCoinCoroutine() } @SuppressLint("CheckResult") fun initCoinRx() { retrofit.getCoinInfoRx("BTC") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { coin -> Log.d(tagt..
본 예제에 model 부분은 없습니다. data 관련 핸들링은 모두 model에서 해야하고, viewmodel에선 view에 로직만 담당합니다. databinding, kotlin을 사용합니다. 사용 파일들은 아래와 같습니다. * AActivity.kt * A1Viewmodel.kt * A2Viewmodel.kt * a_activity.xml * a1_viewmodel.xml * a2_viewmodel.xml 1. AActivity.kt class AActivity :AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) DataBindingUtil.setConte..
val group = intArrayOf(1,1,1,2,2,3).groupBy { it } group.apply { println("this : $this") // {1=[1, 1, 1], 2=[2, 2], 3=[3]} println("group.keys : $keys") // [1, 2, 3] println("group.values : $values") // [[1, 1, 1], [2, 2], [3]] println("group.values.sort 1 : ${values.sortedByDescending { it.size }}") // [[1, 1, 1], [2, 2], [3]] println("group.values.sort 2 : ${values.sortedBy { it.size }}") // [..
with 사용 규칙 Non-nullable (Null 이 될수 없는) 수신 객체 이고 결과가 필요하지 않은 경우에만 with 를 사용합니다. -> 리턴이 없을때 사용 also 사용 규칙 수신 객체 람다가 전달된 수신 객체를 전혀 사용 하지 않거나 수신 객체의 속성을 변경하지 않고 사용하는 경우 also 를 사용합니다. -> 객체 내부 값을 바꾸기 싫을 때 apply 사용 규칙 수신 객체 람다 내부에서 수신 객체의 함수를 사용하지 않고 수신 객체 자신을 다시 반환 하려는 경우에 apply 를 사용합니다. -> 객체의 내부 값을 바꾸고 싶을 때 let 사용 규칙 다음과 같은 경우에 let 을 사용합니다. 지정된 값이 null 이 아닌 경우에 코드를 실행해야 하는 경우. Nullable 객체를 다른 Nulla..
배열 선언 하는 법 var intArr:Array = arrayOf(1, 2, 3, 4) var intArr2 = arrayOfNulls(5) var anyArr : Array = arrayOf(1, "awd", 3.2, 4) 반복문 쓰는 법 for(i: Int in 1..10) print("$i ") //output : 1, 2, 3, 4, 5 ... 10 val len: Int = 5 for(i in 1..len) print("$i ") //output : 1, 2, 3, 4, 5 for(i in 1 until len) print("$i ") //output : 1, 2, 3, 4 for(i: Int in 1..10 step(2)) print("$i ") //output : 1, 3, 5, 7, 9 ..
- Total
- Today
- Yesterday
- https://hwan-shell.tistory.com/244
- react native state
- Android
- 귀찮아;;
- nosql
- MongoDB
- 차번호 정규표현식
- 구글 맵 경로 그리기
- 자바
- adb 환경변수
- https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%98-apply-with-let-also-run-%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-4a517292df29
- not working adb
- 차번호 정규식
- 구글 맵 선그리기
- React Native
- mac android
- 데이터베이스
- ubunut android
- not starting .bash_profile
- insert
- rn
- 클래스형 코드
- ubunut 설치 link
- 명령어
- mongo db
- 함수형 코드
- spannableText
- 안드로이드
- not found adb
- text 부분 색 칠하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |