📍 developer.android.com
Java or Kotlin + XML (화면설계용, HTML 확장버전)
가급적이면 Java에서 new String을 하는 것(하드코딩)이 아니라 XML에 모아놓고 불러다 쓸 것을 권장
∵ Java에서 쓸 경우 모두 if-else를 써야하지만 XML로 할 경우 편하게 국제화 코드 가능
Hardcoded string "Fresh Green Forest", should use @string resource
Java언어 | XML언어 |
---|---|
new String("Hello") | <String>Hello</String> |
new TextView() | <TextView></TextView> |
<String>
종료Tag </String>
이용<String/>
<?xml version="1.0" encoding="utf-8"?>
필요 <Frame size = "30" location = "200"> </Frame>
📂 Hello 📂 java 📃 .java 📂 res 📂 drawable 📃 .png 📂 layout 📂 mipmap 📂 values 📂 xml 📂 manifests
📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- interpret (JVM) --> WINDOWS / MAC / LINUX ==> .exe
안드로이드 = JVM ❌ : 과거에는 가상머신 JVM이 모바일에는 너무 무거웠음 ∴ 한 번 더 축소 압축 후 가상머신 Dalvik 사용
📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- 축소압축 --> .dex --> Dalvik --> MOBILE
BUT, Dalvik의 성능이슈, 개선된 가상머신 ART 사용
📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- 축소압축 --> .dex --> ART --> MOBILE
📂 res 📃 .png .jpg .xml --> 리소스 압축 (aapt)
.dex file + resource file + AndroidManifest.xml + external library == build program ==> .apk
(build program = ANT, MAVEN, GRADLE ✔)
(▶ 실행 click - Run)
① AndroidManifest.xml
(Manifest객체 : 포장지 역할)
쓰여진 순서와 상관없이 intent-filter (action.MAIN)를 가지고 있는 객체가 제일 우선 실행됨
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
❗❗❗ MainActivity가 Main method 역할을 하는것이 아니라 MainActivityr가 AndroidManifest에 등록이 되어있고 intent-filter를 보유하고 있기 때문에 먼저 실행되는 것
② MainActivity 객체 생성
자동으로 생성자(Constructor) 호출 --> BUT 안드로이드에서는 Activity에서 생성자를 사용하지 말라고 함 (여러 이유에 의하여...)
대신 데스크탑과 다른 안드로이드 환경(전화 등)으로 인하여 특수한 상황(화면이 가려짐 등)발생
--> 이러한 상황이 생기면 직접 호출하지 않아도 호출되는 "라이프사이클 메소드"
라이프사이클메소드 : 어떤한 상황이 됐을 때 자동으로 실행되는 메소드 --> OnCreate() 메소드(콜백메소드)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
갑자기 꺼지거나 등의 상황에서 다시 불러오기 (컴퓨터가 갑자기 꺼졌을때 프로그램을 다시 켜면 "복구하시겠습니까?"처럼)
③ onCreate() (callback method)
④ setContentView(View객체);
View 객체 = Java 언어(new) new Button()
/ XML언어(태그문) <Button/>
모두 가능 (XML권장)