월별 글 목록: 2014년 1월월

Android 4.4 AsyncTask 개선점..

안드로이드에서 제일 많이 사용하는 쓰레드 형태가 AsyncTask를 상속하는 구조이고, AsyncTask의 개선은 바로 전체적인 성능개선으로 이어질 가능성이 높다.

AsyncTask의 최신(4.4 KitKat) 버전과 이전(4.3 Jelly Bean)을 비교해 보자.

위 그림에서 최신버전의 180, 181줄의 코드를 확인해 보면, 디바이스의 CPU의 개수에 따른 최적화가 눈에 띈다.

    private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
    private static final int CORE_POOL_SIZE = CPU_COUNT + 1;

하지만, 기존의 코드에서는 아래의 코드로 하드코드되어 있어서 CPU가 2개인 디바이스에서는 오히려 성능을 저하시킬 수도 있다.

private static final int CORE_POOL_SIZE = 5;

위의 코드가 간단해 보일지 모르겠지만, 자바에서 Concurrent 쓰레드 프로그래밍에서는 매우 중요한 포인트이다. 이 작은 포인트가 디바이스에 최적화된 코드중의 일부라고 보면 되겠다.

Eclipse에서 Android ADT Extensions 사용하기..

이 플러그인은 안드로이드 프레임웍의 라이프사이클을 가지는 클래스의 템플릿 메서드를 생성해서, 안드로이드 개발에 도움을 준다. 플러그인 사이트인 https://marketplace.eclipse.org/content/android-adt-extentions 에서는 아래의 한 문장으로 정의하고 있다.

Quickly new Activity/Service/BroadcastReceiver/ContentProvider in Android Project with a wizard and configure in AndroidManifest.xml.

우선, 이 플러그인이 없는 상태에서의 Activity를 생성해 보자. 기존의 안드로이드 프로젝트에서 New -> Other… -> Android Activity 에서 Activity 클래스를 만들게 되면, 아래의 코드가 만들어 진다.

public class OldActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_old);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.old, menu);
		return true;
	}
}

이제 Android ADT Extensions을 Eclipse Marketplace에서 설치하고 Activity를 생성해 보자.

1. Android ADT Extensions 설치

2. Android Activity 클래스 만드는 화면

3. 생성된 코드

public class NewActivity extends Activity {
	/* (non-Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onStart()
	 */
	@Override
	public void onStart() {
		super.onStart();
		// TODO Auto-generated method stub
	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onResume()
	 */
	@Override
	public void onResume() {
		super.onResume();
		// TODO Auto-generated method stub
	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onPause()
	 */
	@Override
	public void onPause() {
		super.onPause();
		// TODO Auto-generated method stub
	}
}

이제, 약간 매번 onXXXX 시리즈의 매서드를 치지 않아도 되겠다. ^^

2013년을 보내며..

2013년이 이틀이나 지났다. 2013년의 마지막을 프로젝트의 마감으로 바쁘게 지나다 보니, 2013년을 보낸 뒤에서야 2013년에 대한 내용을 남길 수 있다.

1. 잘 지내다.

말 그대로 잘 지내고 있다. 이제 미국생활이 2년을 넘기면서 어느 정도 적응이 됐다. 특히 나보다 가족들이 더 적응을 잘하는 것 같다.

2. 새로운 프로젝트의 진행

2.1 MiiPC 프로젝트에 들어가는 서버와 클라이언트(Media Server & Client)를 배포하다.
– 이 프로젝트는 플랫폼을 만들어서 배포하기 위한 회사의 큰 프로젝트의 하나로 안드로이드 OS의 포팅과 포팅된 안드로이드 OS 위에서 동작하는 서비스 개발을 하고 있다.
2.2 우리나라의 S모 대기업과 프로젝트를 진행하고 있다.
– 자세한 내용을 기술할 수는 없지만, 좋은 카운터파트를 만나서 좋게 진행하는 프로젝트이다.

3. 회사생활에 대한 회의감

한때나마 회사생활에 대한 회의감이 강하게 들었다. 꼭 미국이라는 나라에서 직장을 다녀서라기보다는 외부요인이 커서였다. 직장을 다니면서 늘 느끼는 거지만 강한 동기부여가 제일 중요하지 않나 한다. 이 느낌을 계기로 영어공부를 열심히 해 보려고 한다.

4. 새로운 책의 번역 참여

대략 2014년 초에 출간될 책 일부를 번역했다. 느낌상 많이 팔리지는 않겠지만 읽는 독자들에게 도움이 되고, 쓰레기 번역이라는 평가는 안 받았으면 좋겠다.

5. 라스베가스 여행

올해는 여름에 휴가를 가지 못해서, 크리스마스 시즌에 라스베가스로 여행을 했다. 미국에서 살면서 큰 기쁨중에 하나가 여행인 것 같다.

올해에 대한 반성으로..

– 책을 너무 안 읽었다. 책 좀 읽어야 겠당..
– 하지 않는 운동에 대한 아쉬움..

작년의 회고를 다시 읽어보니 달라진 게 별로 없지만, 올해는 영어공부에 시간을 투자해야 겠다. 결론은 작년 회고와 동일하게, 실리콘 밸리는 개발자의 천국이 아니라, 노력한 만큼 능력이 되는 만큼 좋은 결과를 내는 기회의 땅임을 다시 한번 생각하며..
내년도 열심히 해 보자..