반응형 전체 글346 ViewModel, LiveData ViewModel ViewModel은 Activity 및 Fragment의 생명주기를 고려하여 UI 관련 데이터를 저장하고 관리한다. Activity는 Activity가 끝날 때까지 그리고 Fragment는 Fragment가 분리될 때까지 데이터를 메모리에서 유지한다. Activity 및 Fragment의 생명 주기와 관계없이 데이터를 유지한다. 화면 회전과 같이 구성을 변경 할때도 데이터를 유지할 수 있다. ViewModel lifecycle Activity의 onCreate()메서드에 처음 호출할 때 ViewModel을 요청 및 생성한다. 시스템은 액티비티 기간 내내(예: 기기 화면이 회전될 때) onCreate() 메서드를 여러 번 호출한다. ViewModel은 액티비티가 소멸될 때까지 존재한다. .. 개발/Android 2022. 6. 1. Fragment 프래그먼트 Fragment (프래그먼트) 프래그먼트 는 일종의 컴포넌트 같은 개념이다. 여러 개의 프래그먼트를 하나의 액티비티에 결합하여 창이 여러 개인 UI를 빌드할 수 있다. 그리고 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 액티비티처럼 레이아웃을 가진 독립적인 개체로서, 자체적인 생명주기를 가지고 액티비티 실행 중에 화면에 동적으로 추가되거나 다른 프래그먼트로 교체가 가능하다. 한 개의 액티비티에 들어가는 화면 요소를 프래그먼트 단위로 나누어 관리하기 때문에 레이아웃을 분리 관리할 수 있고, 액티비티의 화면 구성을 위한 레이아웃의 복잡도도 줄일 수 있다. 프래그먼트는 항상 액티비티 내에서 호스팅되어야 하며, 해당 프래그먼트의 생명주기는 호스트 액티비티의 생명주기에 직접적으로 영향.. 개발/Android 2022. 5. 31. 자바 애노테이션 백기선님이 과거에 진행했던 Java 스터디 12주차 스터디 입니다. 애노테이션 정의하는 방법 애노테이션이란 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다. 새로운 애노테이션을 정의하는 방법은 아래와 같다. '@' 기호를 붙이는 것을 제외하면 인터페이스를 정의하는 것과 동일하다. 엄밀히 말해서 @Override는 애노테이션이고 Override는 애노테이션의 타입이다. @interface 애노테이션 이름{ 타입 요소이름(); //애노테이션의 요소를 선언한다. .. } 메타 에노테이션이란? 메타 에노테이.. 개발/Java 2022. 5. 27. Java I/O 백기선님이 과거에 진행했던 Java 스터디 13주차 스터디 입니다. Stream, Buffer Stream이란? 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림이라고 정의한다 스트림이란 데이터를 운반하는데 사용되는 연결통로다 스트림은 단방향통시만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 그래서 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림과 출력을 위한 출력스트림, 총 2개의 스트림이 필요하다. 스트림은 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고받는다. 큐와 같은 FIFO구조로 되어 있다고 생각하면 된다. Bu.. 개발/Java 2022. 5. 27. Java enum (열거형) 백기선님이 과거에 진행했던 Java 스터디 11주차 스터디 입니다. enum 정의하는 방법 enum(열거형)은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. 열거형을 정의하는 방법은 아래와 같다. enum 열거형이름 { 상수명1, 상수명2, ... } 열거형에 정의된 상수를 사용하는 방법은 '열거형이름.상수명'이다. 클래스의 static 변수를 참조하는 것과 동일하다. enum Direction{ EAST, SOUTH, WEST, NORTH } class Unit{ int x, y; Direction dir; void init(){ this.dir = Direction.WEST; //유닛의 방향을 WEST로 초기화한다. } } 열겨형 상수간의 비교에는 ==을.. 개발/Java 2022. 5. 26. Java Thread 백기선님이 과거에 진행했던 Java 스터디 10주차 스터디 입니다. Thread 클래스와 Runnable 인터페이스 자바에서 쓰레드를 구현하는 방법은 2가지가 있다. Thread클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이다. 일반적으로 Runnalbe 인터페이스를 구현해 쓰레드를 구현한다. class MyThread extends Thread{ public void run(){ //Thread클래스의 run메서드를 오버라이딩해 코드를 작성 } } class MyThread implements Runnable{ public void run(){ //Runnable인터페이스의 run메서드를 오버라이딩해 코드를 작성 } } 쓰레드를 구현한다는 것은, 위의 두 방법 중 어떤 것을 선택하.. 개발/Java 2022. 5. 25. CMC 해커톤 10기 후기 (2022.05.21 ~ 2022.05.22) Spring 서버 스터디 8주차, 9주차는? Spring 서버 스터디 8주차, 9주차는 그냥 API 작성(JdbcTemplate 쿼리 작성, 컨트롤러, 서비스, 레포지토리 코딩)이라 포스팅을 생략하기로 했습니다. 그래도 8주차, 9주차에 빅 이벤트 CMC 해커톤을 경험했기에 이에 대한 기록을 남겨보려고 합니다!!!! 벌써 이틀이 지나서 기억이 흐릿하지만 최대한 느낀점을 작성하려고 합니다. 해커톤은 서울특별시 공덕역 프론트원에서 진행 되었습니다. 참여 동기?? 저는 UMC 2기 서버 Spring 파트를 진행하고 있습니다. UMC가 대학교 연합 동아리로, 6개월 활동으로 앱 런칭을 목표로 합니다. CMC는 수익형 앱 동아리로 직장인, 대학생들 많은 분들이 참여하는 것 같습니다. 또한 기간은 3개월입니다. 어.. 대외활동/UMC SERVER 2022. 5. 24. Java Exception 백기선님이 과거에 진행했던 Java 스터디 9주차 스터디 입니다. 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외처리란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이다. 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것이다. 발생한 예외를 처리하지 못하면, 프로그램은 비정상적으로 종료되며, 처리되지 못한 예외는 JVM 예외처리기가 받아서 예외의 원인을 화면에 출력한다. try-catch문 하나의 try 블럭 다음에는 하나 이상의 catch 블럭이 온다. 발생한 예외의 종류와 일치하는 catch 블럭이 없으면 예외는 처리되지 않.. 개발/Java 2022. 5. 24. Java interface 백기선님이 과거에 진행했던 Java 스터디 8주차 스터디 입니다. 인터페이스 정의하는 방법 인터페이스는 일종의 추상클래스다. 인터페이스는 추상 클래스처럼 추상 메서드를 가진다. 그러나 추상 클래스처럼 일반 메서드를 가질 수 없다. 또한 인터페이스는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있다. 그외의 다른 어떠한 요소도 허용하지 않는다. 모든 메서드는 public이다. 인터페이스는 기본 설계도라 할 수 있다. 객체지향의 핵심인 다형성을 적극적으로 활용할 수 있게 해주는 요소다. 정의하는 방법은 아래와 같다. interface 인터페이스이름{ public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } 인터페.. 개발/Java 2022. 5. 22. 자바 패키지 (Java Package) 백기선님이 과거에 진행했던 Java 스터디 7주차 스터디 입니다. Package 키워드 이전에 패키지에 관한 내용을 적은 포스팅이 있다. 아래 링크에서 확인할 수 있다. https://devdebin.tistory.com/101?category=1004578 package(패키지) package, 즉 패키지란 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있다. 또한 서로 관련된 클래스를 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다 devdebin.tistory.com Package, 패키지를 정리하자면 패키지란, 클래스의 묶음이다. 사실 클래스의 실제 이름은 패키지명을 포함한다. java.lang.String이 String 클래스의 원래 이름이다. 하나의 소스파.. 개발/Java 2022. 5. 20. Java 상속 (extends) 백기선님이 과거에 진행했던 Java 스터디 6주차 스터디 입니다. 자바 상속의 특징 상속이란 무엇인가? 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 기존 클래스를 상속 받아 새로운 클래스를 만들면, 코드를 공통적으로 관리하므로 코드의 추가 및 변경이 매우 용이하다. 결국 코드의 재사용성을 높이고 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여한다. 자바 상속은 extends 키워드를 사용해 상속을 진행한다. 상속해주는 클래스를 흔히 '조상 클래스' 상속 받는 클래스를 '자손 클래스'라고 칭한다. class Child extends Parent { } 이제 자바 상속의 특징에 대해 간단히 정리해보자. 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. 자손 .. 개발/Java 2022. 5. 20. Java Class 백기선님이 과거에 진행했던 Java 스터디 5주차 스터디 입니다. 클래스 정의하는 방법 클래스를 정의하는 방법을 알기 위해서는 클래스에 대해 알아야한다. 아래는 클래스, 객체, 인스턴스에 대한 내용을 정리한 포스팅이다. https://devdebin.tistory.com/93?category=1004578 클래스, 객체 , 인스턴스 클래스란? 객체를 정의해 놓은 것. 객체의 설계도 또는 틀이다. 객체를 생성하는 데 사용하지만, 객체 그 자체는 아니다. 기능(메서드)과 속성(필드)을 가진다. 객체란? 우리가 주변에서 볼 수 있 devdebin.tistory.com 필자가 정리한 클래스의 의미는 '객체(인스턴스)를 생성하기 위한 설계도'이다. 클래스를 정의하기 위해서는 다양한 고려 사항이 있다. 클래스명 멤.. 개발/Java 2022. 5. 20. 이전 1 ··· 12 13 14 15 16 17 18 ··· 29 다음 반응형