컴포넌트의 특징

  • 안드로이드는 컴포넌트 기반의 개발임.
  • 각 컴포넌트는 개발자 코드간 결합이 발생하지 않음.
  • 컴포넌트의 생명주기는 시스템이 관리한다.
  • 애플리케이션 라이브러리 개념이 있음.

 

안드로이드 컴포넌트의 종류

  • Activity : UI를 구성하기 위한 컴포넌트
  • Service : UI 없이 백그라운드에서 장시간 수행되는 컴포넌트
  • ContentProvider : App간 데이터 공유를 위한 컴포넌트
  • BroadcastReceiver : Event 모델로 수행되는 컴포넌트

 

폴더와 파일

개발과 관련된 폴더는 모듈의 src/main 폴더에 있는 파일임.

  • AndroidManifest.xml : App의 메인 환경 파일
  • java/MainActivity.java : 화면구성용 Activity 컴포넌트
  • res : 앱의 모든 리소스 파일이 res 폴더에 존재함.
  • res/drawable : 이미지 파일 리소스가 저장됨.
  • res/layout : 레이아웃 xml 파일이 저장됨.
  • res/mipmap : 앱의 아이콘 이미지가 저장됨.
  • res/values : 문자열 값 등에 대한 리소스가 저장됨.

 

저장된 리소스의 식별

  • R.java
    - res 폴더의 리소스들을 식별하기 위해 int 형 변수가 나열되어 있음.
  • res 하위에 임의의 폴더 생성 금지.
  • 리소스 파일명도 자바의 명명규칙을 위배할 수 없음.
  • 리소스 파일명에 대문자 사용 금지.

 

안드로이드 버전 정보

source.android.com/setup/start/build-numbers

 

코드명, 태그 및 빌드 번호  |  Android 오픈소스 프로젝트  |  Android Open Source Project

 

'개발 > Android' 카테고리의 다른 글

Auto Import 설정  (0) 2020.08.25
AVD 생성하기  (0) 2020.08.25
새 프로젝트 만들기  (0) 2020.08.25
Android Studio 처음 실행  (0) 2020.08.25
Android Studio 다운로드  (0) 2020.08.25

클래스 선언.

class CSingleCore
{
public:
    class SingleCoreError
    {
    };
    
    ULONG_PTR oam_;
    
    CSingleCore() 
    {
        ULONG_PTR pam, sam;
        if (!GetProcessAffinityMask(GetCurrentProcess(), &pam, &sam))
            throw SingleCoreError();

        ULONG_PTR am = 1;
        int bits = CHAR_BIT * sizeof(am);

        for(int i=0; i<bits; ++i)
        {
            if(am & pam)
            {
                oam_ = SetThreadAffinityMask(GetCurrentThread(), am);
                if(!oam_)
                    throw SingleCoreError();
                break;
            }

            am <<= 1;
        }
    }

    CSingleCore::~CSingleCore() 
    {
        SetThreadAffinityMask(GetCurrentThread(), oam_);
    }
}

사용시

int func() 
{
    CSingleCore scTmp;
   
    int a = 1 + 2 + 3;
    return a;
}

CSingleCore가 생성될 때 SingleCore로 설정함.

함수를 빠져나가면서 CSingleCore가 소멸될 때 원래 설정으로 되돌림.

[ Form 생성 ]

Constructor()

OnCreate()

OnShow()

OnActivate()

OnCanResize()

OnConstrainedResize() 
OnResize()

OnPaint()

 

[ Form 소멸 ]
▶ MainForm의 Close() 함수 호출 또는 x(닫기) 버튼 클릭시
OnCloseQuery()

OnClose()

OnHide() ← TApplication이 소멸되는 시점

OnDestroy()
 
MainForm이 아닌 Form의 Close() 함수 호출 또는 x(닫기) 버튼 클릭시 
OnCloseQuery()

OnClose()

OnHide()

OnDeactivate()

Memory에서 제거되지 않은 상태임.
Form이 닫힐 때 Memory에서 제거하려면 OnClose 이벤트에서 Action = caFree를 추가하면 OnDestroy() 이벤트가 발생하며 delete 됨.


▶ MainForm을 delete 하는 경우
OnHide()

OnDestroy()

TApplication은 소멸되지 않음. (프로세스는 살아 있는 상태)

 

▶ MainForm이 아닌 Form을 delete 하는 경우
OnHide()

OnDestroy()

 

http://cbuilder.borlandforum.com/ 에서 보고 남겼던 자료를 정리함.

원문글은 찾지 못함.

자바 코드 개발시 개발자가 코드에 추가한 클래스를 위한 import 구문을 자동으로 작성해 주는 기능.

 

[File -> Settings] 메뉴 클릭.

 

Editor > General > Auto Import 선택.

Add umambiguous imports on the fly 체크

Optimize imports on the fly (for current project) 체크

 

'개발 > Android' 카테고리의 다른 글

개요 (컴포넌트와 폴더 구조 등)  (0) 2020.08.31
AVD 생성하기  (0) 2020.08.25
새 프로젝트 만들기  (0) 2020.08.25
Android Studio 처음 실행  (0) 2020.08.25
Android Studio 다운로드  (0) 2020.08.25

처음 실행하면 안드로이드 폰을 대신할 에뮬레이터가 필요함.

다음과 같이 Android Virtual Device를 추가함.

 

AVD Manager
메뉴 아이콘 중 우측의 AVD Manager 실행
Create Virtual Device 선택
사용하려는 핸드폰의 크기 선택
안드로이드 버전 선택

Recommended : 추천하는 시스템 이미지 목록

x86 Images : 하드웨어 가속 기능을 사용하는 시스템 이미지 목록

Other Images : 하드웨어 가속 기능을 이용하지 않는 시스템 이미지 목록

 

에뮬레이터 상세 설정

순서대로 설정을 끝내고 Finish 클릭.

에뮬레이터 목록 표시

우측의 화살표를 클릭하면 AVD가 구동됨.

 

 

AVD 구동화면

구동 후 안드로이드 스튜디오 하단의 Logcat을 확인해야 함.

정상 연결된 상태에서는 아래 이미지와 같이 로그가 출력됨.

Logcat 화면

만약 UNAUTHORIZED 가 표시되면 연결되지 않은 것으로 AVD 목록에서 맨 우측 화살표를 누르고 Delete 후 다시 설정하여 실행하면 정상적으로 연결됨.

'개발 > Android' 카테고리의 다른 글

개요 (컴포넌트와 폴더 구조 등)  (0) 2020.08.31
Auto Import 설정  (0) 2020.08.25
새 프로젝트 만들기  (0) 2020.08.25
Android Studio 처음 실행  (0) 2020.08.25
Android Studio 다운로드  (0) 2020.08.25

+ Recent posts