s2jinny 2023. 1. 4. 14:26

네개의 컨퍼넌트 

ContentProvider : 자료 제공자 (사진 가져오거나 주소록 가져오거나 데이터 베이스 자료 가져올 때 등)

Service : Activity와 반대되는 (background , 눈에 보이지 않을 때 활동 )

BroadcastReceiver : 알림을 도와주는 (메세지가 오면 알려주는 역할 우체부 통신 역할, 카톡 알림오는 )

 

Activity 

1. 윈도우의 '창' 

2. 맥의 'finder' 창

3. 아이콘 누리면 뜨는게 액티비티 

Activity 가 하는 일 : UI를 보여주고 행동까지 하고 다 한다..

가장 중요한 클래스이고 생명주기를 가지고 있다. onCreate()에서 액티비티 작성을 시작하자 !

 

on이 붙으면 CallBack 

onCreate() : 시작점. 액티비티가 생성되었을 때 준비함

onStart() : 시작 직전

onResume() : 완전 직전 

Activity running: 런타임상태 실제로 도는 것. 

onPause() : 작은 창 (화면은 안가리는데 작은 창이 뜰때) 일시정지 / 크게 등장하는데 교환되는 시간이 있을 때 중간상태에 있을 때 

onStop() : 우리가 보이던 화면이 안보이고 다른화면으로 넘어갈 때  화면이 안보인다.

onDestroy(): 더이상 쓰지 않을때  액티비티가 꺼진다? 하면 onDestroy .

그런데 앱꺼지지 않고 다시 앱을 킬 수있음 -> onRestart() 로 들어감.

onStop() -> App Process Killed() -> onCreate() : 우리가 끄지 않았지만 너무 오랫동안 사용을 안 해서 자동으로 꺼질 수도 있음.

 

Intent 

명시적 Intent : 보내는 이와 받는이가 명시되어있음. 

Intent intent=new Intent(this, NewActivity.class);

startActivity(intent);

( intent.putExtra("별명","값") / getIntent().getStringExtra("별명") )

 

암시적 Intent : 해당된다 싶으면 다 부름. 앱과 앱 사이의 교류 

예를 들어, 전화번호에 바로 통화를 걸고 싶을 때 (통화가 가능한 앱들이 자동으로 추천됨)

Intent sendIntent=new Intent();

sendIntent.setAction(Intent.ACTION_DIAL );   // ACTION_... 

startActivity(sendIntent);

 

Intent는 Activity를 시작할 수 있게 도와주고 다른 앱도 실행할 수 있음. 자료를 넣어 보낼 수도 있다. 

 

Android Studio 

: Logcat화면에서 에러를 확인하고 구글에 검색해보고 공식홈페이지에서 영상과 번역 문서를 읽어보자 

 

View

화면 그 자체 , Acticity에 씌우는 화면 껍데기

XML, JAVA 둘 중 하나로 작성 가능 

보통 Widget,Adapter,Layout... 계열로 나뉨.

 

Widget 위젯

TextView, ImageView 등 보통 사용자와 작용하는 용도가 뚜렷한 View 임. 

Adapter 어뎁터

위젯을 묶어서 여러개를 보여줄 때 

ListView(가로로 한칸을 채워 한줄 씩 내려감), GridView(한줄에 여러개로 내려감), RecyclerView (new 리스트랑 그리드뷰 대체할 수 있음, 엇갈리게도 만들 수 있음)등 많은 정보를 길게 스크롤하며 나열할 때 사용함.

 

Layout 

LinearLayout, RelativeLayout, FramLayout  등 Widget,Adapter,Layout 을 담을 수 있는 틀.

화면 공간을 배분할 때 많이 쓰인다. 

LinearLayout: orientation="vertival" or "horizontal" 

RelativeLayout: 관계 레이아웃

id를 설정해줘서 layout_above="@id/..." 

Framlayout: layout_gravity="bottom" ,layout_gravity="center" 

FramLayout 과 LinearLayout 차이점: FramLayout 은 겹칠 수 있음! 

 

Fragment 

만들어진 의도는 유연한 UI 제공. 작은 Activity (독립된 개체)

Activity를 부모처럼 가진다. 많은 Activity에서 재사용이 가능하다. 

고유의 생명주기가 있다. 부모의 액티비티 생명주기를 거의 따른다. 보통 onCreateView() 에서 코드 시작함.

onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() : Created

->onStart() : Started

->onResume() : Resumed

->onPause() : Paused 

-> onStop() : Stopped

->onDestroyView() -> onDestroy() ->onDetach() : Destroyed

 

XML 생성기법 

name 에 클래스 명을 적고 만들면 영원히 박제해버린다. 실행시에 바꿀 수 없다. 고정으로 쓸때 짱 짱 편함!

 

Java 생성기법 

XML 에는 들어갈 공간만을 만들어준다.

코드로 다 만들고 언제든지 교체 가능하다 !

 

ViewPager 

좌우로 스와이프하여 여러 페이지를 이동할 때 쓰인다. 상단이나 하단에 탭과 연동하여 쓰이고 하나의 페이지는 보통 Fragment로 구현한다. 

 

Adapter 

: BaseAdapter, ArrayAdapter, ListAdapter, PagerAdapter, FragmentPagerAdapter ... 

AdapterView : ListView,GridView,RecyclerView,ViewPager...