2010년/안드로이드

2011년 2월 10일

뽀얀햄스터 2011. 2. 10. 10:27

Affinity 와 new Task

default  Application의 모든 Activity는 하나의 Affinity를 가진다..

갑자기 Activity나 Affinity나 생소해보인다. 

Activity는 간단하게 지금 안드리로이드에서 보여주는 화면을 말한다.

내가 만약 contents를 보여주거나 sms를 만지고 있다면 Activity는 contents의

화면이나 sms화면이 Activity라고 할수있다.

물론 한번에 한화면을 보여줄수있지만. 요즘은 같이 멀티태스킹이 되는데 세상에

단하나의 작업만 한다면. 정말 무식하다고 할수있다.  음악을 들으면서. sms도 보낼수있고

하나의 앱에서 버튼을 눌릴때 새로운 화면이 하나씩 뜨는경우.

background와 foreground를 통해서 안에서 작업하고 또는 화면하나가 종료가 될때

이전화면을 background에서 foreground로 바꿔야하는경우   이런 모든 작업을 task를 통해서

이루어진다. 여기서 affinity는 activity에서 새로운 신규 activity가 생성될경우 동이란 affinity를 가질

경우  task를 생성하지않고 기존 task에서 신규 activity를 생성한다.  전문용어로 런치된다고 하면 된다.

어제 이어서 간단해보이는 소스코드다.
소스의 특징은 앱을 개발을 위해서. Helloworld를 찍기위한 코드다. 
Activity를 HelloWorld가 상속받았다. 그리고 Activity클래스 안의 onCreate를
Override로 재구성해서했다. 그리고 view로 R.layout.main를 호출한다.




R.java를 확인하면.. 유일한. 상수 클래스인 여러가지를 만드는데
icon과 layout, 그리고 string의 옆에 16진수는 전부 주소이다.
이에 대한 내용은 res에 있고 화면구성을 정보를 main.xml
그리고 값에대한 Manifest.xml에 있다.




자그럼 당연히 debug모드를 알아야한다. 프로그램을 수정하고 할땐 빠르게 알수있기때문이다

안드로이드의 debug모드는 어떻게 될까~?



이클립스에 Open Perspective에서 Other를 선택하면



DDMS를 선택하고 이클립스 오른쪽 상단에 추가가 된다.




debug모드의 화면이다.
아주 자주 보게 될화면이다.

다음은  Manifest.XML이다. 안드로이드는 기존의 JAVA와 XML 그리고  png, MP3등   합쳐져서  *apk가 생성된다 여기서 XML과 JAVA는 *dex로 인해 바뀌는데 XML과 JAVA를 함께 같이 쓰기위해서는  XML을 JAVA와 같이  CLASS로 바꿔야한다. 하지만  XML에서 CLASS로 바꾸기위해서는 그 CLASS의 이름을 정의하기 위해서   @id로 만들어준다.

XML는 리소스 부분에 정의 되어있기때문에 메모리에 Mapping을 시켜서 gen의 R.java에 실제 주소가
적혀지는것이다.
EX) public static final int icon=0x7f020000;



XML => 화면 view
JAVA=> 동작 Event driven
Linux=> Resource handler