전체 글 237

안드로이드 라이프사이클(android lifecycle)

생명주기(Lifecycle) 액티비티 생명주기란 액티비티가 생성되고, 정지되고, 재생되고, 종료되는 등의 상태 변화와 그에 따른 콜백 메서드를 총칭한다. 안드로이드 개발자라면 액티비티의 생명주기를 알아야한다. 안드로이드를 처음 공부하면, Activity를 생성하고 layout과 연결하는 작업부터 시작하기 마련이다. 화면 단위에 해당하는 Activity들은 생성되고, 파괴되고, 다른 Activity에 가려지기도 한다. 간단한 화면 하나를 구현하는 작업이라면 이러한 Activity의 생명주기에 대해서 자세히 알지 못해도 별다른 문제가 없다. 하지만 백그라운드에서 어떤 다운로드 작업이 진행되고 있다고 생각해 보자. 다운로드 도중에 Activity가 갑자기 종료된다면? 이 작업은 화면과 관련 없이 돌아가고 있기..

Android 2021.05.01

코틀린 프래그먼트 데이터 전달

출처 : magicalcode.tistory.com/40 프래그먼트(Fragment) 는 하나의 액티비티에 각 화면을 분할, 독립적인 코드로 구성하는 것을 말합니다. 그래서 액티비티와 프래그먼트, 프래그먼트와 또 다른 프래그먼트끼리 통신을 할 필요가 있습니다. 어떻게 할 수 있을까요? 바로 시작합니다! 액티비티 프래그먼트 A프래그먼트 액티비티 B프래그먼트 데이터 전달하기 1. 프래그먼트 띄우기 데이터를 전달하기 위해서 간단한 앱을 만들겠습니다. 이미 구성하신 분들은 2번부터 봐주세요~ 아래와 같이 프래그먼트 클래스 및 .xml 를 먼저 만들어주세요. 그리고 각각의 레이아웃을 만들어 주시는데요. 저는 간단히 영화 포스터를 보여주고 버튼을 누르면 상세화면으로 바뀌도록 구성했습..

Android 2021.04.25

코틀린 커스텀 다이얼로그

1. 커스텀 다이얼로그(Custom Dialog)로 사용할 코틀린 클래스 만들기 먼저 커스텀 다이얼로그(Custom Dialog)가 될 코틀린 클래스를 아래처럼 만들어 줍니다. class CustomDialog(context: Context) { private val dialog = Dialog(context) fun myDig() { dialog.show() } } ① 파라미터로 액티비티의 Context 를 전달 받습니다. 다이얼로그(Dialog)가 어떤 액티비티에서 나와야하는지 알려줘야하기 때문이죠. ②, 다이얼로그(Dialog) 에 context 를 넘겨 줍니다. 이제 액티비티에서 이 다이얼로그(Dialog) 를 호출하기 위해서는 ③ 함수를 호출 하면 됩니다. 하지만 이 상태로는 화면엔 아무것도 나..

Kotlin 2021.04.25

커스텀 객체를 sharedpreferences 에 저장하고 불러오기

1. String 형식으로 저장 할때 public void setStringArrayPref(Context context, String key, ArrayList values) { SharedPreferences prefs = context.getSharedPreferences("key", MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); JSONArray a = new JSONArray(); for (int i = 0; i < values.size(); i++) { a.put(values.get(i)); } if (!values.isEmpty()) { editor.putString(key, a.toString()); } else { edit..

Android 2021.04.16

JAVA 시간 차이 계산하기

가끔 코드를 짜다보면 시간과 시간사이의 차이를 구해야할때가 종종 있다. 어렵지는 않지만 할때마다 찾아보면서 만들어서 기록해둔다. 첫번째 방법 //요청시간 String String reqDateStr = "202104100830"; //현재시간 Date Date curDate = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMddHHmm"); //요청시간을 Date로 parsing 후 time가져오기 Date reqDate = dateFormat.parse(reqDateStr); long reqDateTime = reqDate.getTime(); //현재시간을 요청시간의 형태로 format 후 time 가져오기 curDate =..

Java 2021.04.10

Mysql sql 기본 쿼리문 (insert , select , update, delete)

1. INSERT 데이터(레코드)를 삽입하는 명령어입니다. INSERT INTO 테이블명(name, profile ,date) (1) VALUES ("영재", "학사", Now()); (2) (1) NULL이나 DEFAULT로 설정된 컬럼도 존재하기 때문에, 데이터를 삽입할 부분만을 매개변수로 넘겨줍니다. (2) VALUES는 실제로 삽입할 데이터를 기입합니다. Now()는 현재 시간을 반환하는 함수입니다. ​ 2. UPDATE 데이터(레코드)를 변경하는 명령어입니다. UPDATE 테이블명 SET 수정되어야 할 컬럼명 = 수정되기를 원하는 새로운 값; [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] (1) WHERE은 변경되기 원하는 레코드만을 고르기..

DB 2021.04.04

Kotlin(코틀린) 에서 fragment 를 써보자

자바에서는 fragment를 만드는게 아주 귀찮았던거 같은 기억이 있다. 특히 fragment 안에 fragment 를 넣는건 좀 더 신경 써줄 코드가 있었던걸로 기억하는데 코틀린에서는 Activity 에서 fragment 를 만들때 xml 에 fragment가 띄워질 공간을 framelayout 으로 만들어주고 액티비티에서 supportFragmentManager.beginTransaction() .replace(R.id.fragment_view , AccountBookFragment()).commit() supportFragmentManager 를 사용하고 replace 안에 fragment 가 띄워질 공간 id 와 그곳에 띄워질 fragment의 이름을 적고 commit 그리고 프라그먼트안에 프라그..

Android 2021.04.04

ListView(리스트뷰) 자동 높이, 크기 조절

리스트뷰안에 들어간 데이터의 수 만큼 자동으로 높이를 조절해주는 코드. public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = list..

Android 2021.03.29

prototype 이란?

프로토타입은 아주 쉽게 말해서 함수에 속성이나 기능을 공통적으로 추가하는 객체를 이야기 한다. 엄청간단하게 말하면 그렇다. function User(name,age){ this.name = name; this.age = age; } 예를 들면 위에서 만든 User 함수에 User.prototype.emailDomain = "@google.co.kr"; 이라고 설정해주면 User 로 만든 모든 객체들이 예를들면 user1....user5000까지 emailDomain 속성을 가지게 되고 그 값으로 @google.co.kr 을 가진다. user50000.emailDomain; 이라고 쳐보자 위에서 대입한 이메일 값이 나올것이다. 이렇게 속성 값을 공통으로 지정해 줄 수 있을 뿐 아니라 기능도 추가해 줄 수 ..

Javascript 2021.03.27

MVVM 패턴 설명 - 2(view Model)

정말 오랜만에 MVVM 패턴의 두번째 글을 쓴다. 그동안 이것저것 바빴는데 다 핑계처럼 들릴거 같아서 그냥 포스팅이나 하겠다. 사실 핑계 맞다. 저번 포스팅은 View에 대해 다뤘는데 오늘은 ViewModel 에 대해서 적으려고 한다. ViewModel은 MVP 패턴에 프레젠터랑 비슷한 느낌이다. 중간에서 데이터를 받고 전달해주는 우편부 역할. 그러나 다른점이 있으니 패턴이름도 달라졌을터 의존성의 문제가 달라졌다. MVP 패턴의 프레젠터는 모델과 뷰에 각각 의존성을 가지고 있었는데 MVVM 은 data Binding 이라는 개념을 통해 Model 파트와의 의존성만 가지고 view와의 의존성은 가지지 않는 구조를 갖게 되었다. 이해가 되지 않는다면 인터넷에 MVVM 패턴이라고만 쳐도 그림으로 그려져 있는것..

Android 2021.03.27