본문 바로가기

📜✏️노트 자리없어서 적는 IT 지식📜✏️

모바일 프로그래밍(2022.07.~)

애피타이저로 간단하게, 시작하자면 휴대폰을 볼 때 2/3으로 나누고 보는영역, 인터렉션 영역으로 나눈다.

MVM 개선

 

MVVM : 구글앞의 설계방법 (서로 의존성을 낮출 수 있다.)

 

안드로이드 애플리케이션 설계 원칙

Activity / Fragment -> ViewModel > Repository

 

안드로이드 개발 환경 -> SDK(Java) / NDK(C, C++) / PDK(C, C++하드웨어)

 

 

-군대로 인한 기억상실로 적은 내용-

 

 

 

■ 변수는 정보를 저장하고 사용한다.

     ㄴ 변수의 메모리(크기) 공간은 INT, float, double, char, string

     ㄴ 변수명 int var1 = 10 // 10을 var1에 저장한다는 뜻

 

저장된 값을 꺼내오는 것은? -> System.out.PrintIn(var1); 이거임

 

조건문 뭐 if, switch{} , case

 

if - 숫자, 분기 반복  switch - 조건이 많을 경우에 사용

 

 

 

 

◆  전역 / 지역 변수 -> 보임 / 안보임으로 나눔

 

전역에서 지역은 보이나 지역은 전역이 안보인다.

 

static int var = 100; -> 변수지정 코드에

{ public ...

       in var=0;

 

hap = num1 + num2 = var; < 이게 보여야 전역 변수임.

 

예외 처리 : try - catch

 

연산자 클래스, 인스턴스(또 붕어틀, 붕어빵 어쩌구)

 

객체 = 변수 + 함수

 

 

 

 

 

◆ 메소드 오버라이딩 : 여러 개 중 하나

 

ex) 자동차 클래스 : 속도 올리기() = 메소드

 

승용차 클래스 : 속도 올리기() < 같은 기능인데 이름만 달라! = 오버라이딩

 

추상클래스 / 메소드 : abstract

 

 

◆마크업! - 문서 구조 정의 (내용, 구조, 스타일)

 

마크업 표현이 프로그램마다 다르면? = 호환성 문제(아직 이해못함)

 

HTML 단점( 모호성 문제 )

>SGML과 HTML의 장점 = XML!

 

 

HTML                                             SGML                                      XML

DTD정의 사용자 정의          사용자정의 태그 지원                사용자 태그 지원                                <태그>

불가능                                            무제한   

 

단순한 구조의 문서             방대한 내용과 구조를 요함        SGML과 동일 웹상의 교환문서      <응용분야>

 

효과적 검색어려움              자료의 표현구조와 자료의          정확한 검색 가능                            <문서 검색>

        (CSS )                                  내용분리 (DSSSL)                     (XSL)

 

 

XML은(중요 ★) <-> 메타 데이터

ㄴ 정보 저장과 구조기술을 해주는 명세서이다.

ㄴ 사용자 정의 ML을 정의한는 규칙의 집합

자체 태그가 없다.

 

HTML은 데이터 처리부분에서 { 모호성 } 이 존재한다.

-> 그래서 XML을 씀.

<시스템 정보 분야 (XML 문서 교환

<웹 서비스 분야 (SOAP에서 사용

 

element는 시작과 <element> 끝 /element가 있다.

ㄴ XML은 무조건 트리구조로 만들어야 함

 

요소는 내용에 같은 구조, 다른 구조 2개 만들 수 있다.

ㄴ기본적 트리구조                 ㄴ복합적 트리구조

 

 

 

<Students>

          <Course>

                  <Cno></Cno>

                  <Cname></Cname>

                  <Credit><Credit>

          </Course>

</Students>

 

 

XML 요소 <name>홍길동</name>

      ㄴ <name>XML</name>   -  겹칠 때 사용하는 건? namespace

 

 

엘리먼트 이름 앞에 서로 다른 접두사를 붙여 구별하는 방법.

          ㄴ네임 스페이스 기법       ㄴ<st:student>

            앞에 URL을 붙인다.              ㄴst에 있는 student라는 뜻

 

XML은 요소(속성) or 태그로 제작

(제작 단계)

->

1. 표현하려는 객체 선택

2. 요소를 추출해서 정의 / 분석

3. 분석된 정보로 ★트리★를 만들고 요소에 대한 정형화된 데이터 작성

4. 요소명과 속성명을 구분해서 정의한다.

5.트리를 보고 XML문법에 맞게 작성.

 

XML 설계시 트리가 필요!!!

        ㄴ 정형식 문서 - XML 문법과 규칙에 맞게 오류가 없는 문서.

         ㄴ 유요한 문서 - 특정 DTD 규칙대로 작성된 문서를 해당 DTD에 대해

                                                              ㄴ 문서의 형식을 정의하고 자동화 형식 확인.  자동화 형식 확인, 문서의 기준 정함

 

DTD : 문서 형태(구조)를 정의 (규칙의 집합)

왜 필요한데! - 문서 가독성을 높일 수 있다!

                       규칙대로 작성했는지 확인한다! 

                       XML을 만들때의 표준 및 규칙이다.

 

일반적으로 DTD는 외부 DTD이다.

 

◆ XML 작성 기본 규칙

-DOCTYPE는 대문자 

!DOCTYPE <문서이름>

 

★자식요소에서 정의 할 수 있는 선언자 기호

 

* : 선언된 요소가 0번이상 사용 될 수 있음(0~n)

      -> A, (B | C)* + : A요소가 먼저 사용, B or C가 0번 이상 사용 (A, BBB or A , CCCC)

 

? : 선언된 요소가 0 or 1번 사용될 수 있다 (0~1)

      -> A, B? = A가 사용, B요소가 0 or 1 번 사용

 

+ : 선언된 요소가 1번이상 사용될 수 있음 (1~n)

        -> A, (B | C) + : A 요소가 먼저사용, B or C가 1번이상 사용 (A, BB or A, CC)

 

<!ATTLIST> -> 속성시 나온다.

 

엔티티 정의 = 바꿔치기 개념.

<!ENTITY 학교주소 "서울">

=> &학교주소; - 이렇게 바꿔치기해도 같은 값이다.

 

INCLUDE 유효성검사를 키워드포함하겠다.

IGNORE 유효성 검사를 키워드로 정의한 부분은 안하겠다.

 

 

XML 스키마 선언

    -XML 스키마선언은 <xsd : schema>로 시작

    -최상위는 항상 , Schma , 사용자가 설정가능

 

 

순차적으로 자식 엘리먼트 사용 - sequence

 

선택적으로 사용 - choice

 

 

element안 element는 복잡하기 때문에 <xs:ComplexType>을 추가한다.

 

Xpath - XML문서의 특정 부분의 위치찾기

 

Student[name] -> 자식요소로 <name>을 가진 모든 <Stuent>요소

Student[@sno] -> 속성이 sno인 모든 Student 요소

name[.=홍길동] -> 요소내용이 " 홍길동 " 인 모든 <name>요소

Student [@sno = 's100'] -> sno속성값이 s100인 모든 Student요소

 

◆ XLink

   - 자원들 사이에 링크를 표현하기 위하여 사용되는 XML 관련 표준

 

HTML 링크 < 단 방향 링크>

XLink <단, 양 방향 모두 가능 링크>

 

DOM 개념 - 조작의 개념 (SAX)

 

XML문서와 HRML 문서 조작을 위한 API.

-> 정보를 저장하고 구조를 기술하는 명세서

 

= 문서를 조작하기 위한 작동 대부분 프로그래밍언어에서 DOM 사용

 

DOM을 이용한 XML문서 생성 과정

 

XML문서 -> 파서 -> 문서트리 -> DOM API를 이용(조작한다.) C, java , c++등 -> 결과 생성

 

파서 (유효성 검사, 내부적 트리 생성)

DOM은 트리를 만든다.

 

SAX : 순간 순간 문서를 읽어 드릴때 처리해줌(이벤트 기반 API)

XML : 접근 방법도 DOM이다.

 

ELEMENT, Attr = Node

 

DOM과 SAX의 특징

 

 

 

새 화면 만들어 띄우기

 

1.안드로이드 프로젝트 생성

2. 화면 디자인 또는 편집(.xml)

3. JAVA코드 작성 or 수정(.java)

4. 프로젝트 실행 및 결과확인 (AVD)

5. 종료(개발완료)

 

집고 넘어가야할 부분!!

 

main이 안보인다 -> onCreate가 시작점

 

실행시 xml에 있는 문자의 부분이 실제 화면으로 나오는데, 실제 객체로 나오는 부분이 setContentView이다.

 

★setContentView(R.layout.activity.main); -> 내용물이 뷰로 나타낼때 설정.

 

 

버튼이 동작하려면 OnClick 있어야됨.

 

잠시보였다가 자동으로 사라지는 메세지는? = Toast

 

dp //  화면 밀도에 독립적 작용단뒤 >해상도> 에 따라 같은 비율로 출력.

 

layout_margin > 위젯과 위젯사이의 여유

 

visible -> 동작여부 enabled 속성 - 클릭이나 터치가 가능하도록 하는 것은 clickable 속성

 

CompoundButton은 Button을 상속받은 클래스로 체크, 언체크 두 가지 상태

 

 

◆ 레이아웃 - viewGroug으로 상속받으며, 내부에 무엇을 담는 용도로 사용 위젯을 배치해 안드로이드 화면 구성시 사용

 

> 제일 많이 사용되는건 리니어레이아웃이다.

 

gravity - 레이아웃 안 위젯을 어디에 배치하는지 결정

 

중복 리니어 레이 아웃(격자 무늬가능)

 

 

체크박스체크 확인법 - isChecked()

 

 

layout_weight = 크기를 지정할 때 비율로 적용시 사용

 ㄴ 크기가 변해도 그 비율에 맞게 설정가능

 

XML 사용안하고 화면 만들기

 

JAVA코드로 제작

   +setContentView함수를 주석처리하며 xml화면이 나오지않게

   +리니어레이아웃 생성 java 코드 자석

 

★- setcontentviewCbaseLayout, params >> 리니어 레이아웃 생성

 

동적으로 무엇을 만드려면 .addview(btn);이 필요

 

addView(); 기존의 뷰에다가 붙여넣기하는 함수

 

GridLayout - 위젯을 표 형태로 배치할 떄 사용

 

 

★ View와 window! ★

 

애플리케이션은 엑티비티로 구성되어있다. / 엑티비티와 뷰의 관계

                               ㄴ 하나의 윈도우를 가짐 -> 위도우는 surface를 가짐, 이벤트 관리

 

surface는 그리기 사각영역 ( 다이얼로그 , 엑티비티, 상태바는 고유 서피스 가짐 )

 

-> ViewRoot : surface는 views를 가진 viewGroup을 가짐

 

 

안드로이드 4대 컴포넌트 

 

가스비(CASB)

 

안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다.

 

Android 앱의 필수적인 구성요소로, 각각은 시스템이나 앱에 들어올 수 있는 진입점이다.

 

특징

  • 각 컴포넌트는 독립적으로 존재한다.
  • 각 컴포넌트는 고유의 기능을 수행한다.
  • 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다.

초 요약본

 

Activity : 화면을 구성하는 가장 기본적인 컴포넌

 

Content Provider : 응용프로그램 사이에 데이터 상호공유를 위한 컴포넌트

 

Service : 백그라운드에서 계속 동작하는 컴포넌트

 

Broadcast Receiver : 문자, 배터리방전, SD카드 탈부착 등 전체 응용프로그램이 들을 수 있도록 방송신호를 보냄(사이에에서 메신저 역할 (Intent)

 

 

명시적 인텐트 - 클래스    -안드로이드 4대 컴포넌트간 데이터를 주고받는 메세지 객체

 

 

양방향 엑티비티 주고 받기!!

 

 

StartActivityForResult는 향후 동작이 안될 수 있다.

                           ㄴ Result_OK로 넣어야함.

 

 

암시적인텐트 - 약속된 액션을 지정

 

안드로이드 생명주기 !

 

 

1) onCreate()

  • Activity가 생성되면 가장 먼저 호출됨
  • 화면 Layout 정의, View 생성, Databinding 등은 이곳에 구현함
  • 생명주기 통틀어서 단 한 번만 수행되는 메소드
  • 따라서 Activity 최초 실행에 해야하는 작업을 수행하기에 적합함

2) onStart()

  • Activity가 화면에 표시되기 직전에 호출됨
  • 화면에 진입할 때마다 실행되어야 하는 작업을 이곳에 구현함

3) onResume()

  • Activity가 화면에 보여지는 직후에 호출됨
  • 현재 Activity가 사용자에게 포커스인 되어있는 상태

4) onPause()

  • Activity가 화면에 보여지지 않은 직후에 호출됨
  • 현재 Activity가 사용자에게 포커스아웃 되어있는 상태
  • 다른 Activity가 호출되기 전에 실행되기 때문에 무거운 작업을 수행하지 않도록 주의해야함
  • 영구적인 Data는 이곳에 저장

5) onStop()

  • Activity가 다른 Activity에 의해 100% 가려질 때 호출되는 메소드
  • 홈 키를 누르는 경우, 다른 액티비티로의 이동이 있는 경우가 있음
  • 이 상태에서 Activity가 호출되면, onRestart() 메소드가 호출됨

6) onDestroy()

  • Activity가 완전히 종료되었을 때 호출되는 메소드
  • 사용자: finish(), onBackPressed()(기존 액티비티의 onResume()까지 호출된 후 onDestroy() 호출)
  • 시스템: 메모리부족(프로세스 종료)
  • onStop(), onDestroy() 메소드는 메모리 부족이 발생하면 스킵될 수 있음

7) onRestart()

  • onStop()이 호출된 이후에 다시 기존 Activity로 돌아오는 경우에 호출되는 메소드
  • onRestart()가 호출된 이후 이어서 onStart()가 호출됨

 

Task - 특정일 수행시, 상호작용하는 액티비티들의 모음!

-새로운 액티비티를 실행시 열린 순서대로 스택이 들어감 (안드로이드 백 스택 이라고함)

=액티비티를 부르고 또 부르면 스택이 쌓인다. 그때 BACK 누르면 이전 엑티비티가 보여진다.

 

프래그먼트 - 화면분할표시

액션바 - 여러화면 사용을 위해

 

학습정리 (7/3 - 31분)

안드로이드 핵심 커널은 리눅스 SDK에 많은 라이브러리 포함 개발 용이

안드로이드 개발언어는 JAVA 오픈소스 지향, 운영체제부터 모든것이 무료 - > 지속적 업그레이드 제공

 

주요기능 (안드로이드)

 - 어플리케이션 프레임워크로 제공되는 API 사용, 효율적, 빠른 애플리케이션

 - 달빅 또는 아트 제공

  등등..

 

                                                                          안드로이드 1학기분 정리 끝~!