5월, 2011의 게시물 표시

진저브래드

이미지
갤스에 진저브래드 올리는 중이다. 5월 17일부터 가능했다고 하는데 18일(어제)봤다. 백업도 해야되고, 펌 다운로드 시간도 오래걸려서 오늘로 미루었다. 먼저 다운속도와 기타 여러문제를 사전에 수집하고자 고수들이 모이는 맛클로 갔다. ㅋ 역시 모비순정이 토렌트로 올라와있고, T맵도 벌써 올라와있었다. 백업은 Kied 가 편리해서 루팅해서 한번에 백업 받았다. 기타 가계부(?)나 자주사용하는 앱들 데이터는 몇개만 골라서 받았다. 전화번호부와 메모등은 Kies를 이용해서 백업했다. Odin을 실행하고 갤스 다운로드모드로 진입하기위해 볼륨다운키+홈키+전원키 를 눌러주었다. (참고: 밧데리 표시가 화면에 나올때 눌려주는게 쉬움, 화면 꺼져있을때는 밧데리 표시만 나오고 부팅만 될수 있음) 공장초기화 메뉴가 나왔다. 젝1 ㅡㅡ; 아... 홈키+전원 키였나??? 어찌되었든 다시 부팅되버리고 한참을 기다렸다. 귀찮아서 그냥 sdk에 있는 adb 를 이용해서 부팅시켰다. ( adb reboot download ) 오딘으로 모비펌을 업로드했다. (PDA를 클릭해 펌 선택, Start 로 업로드) 끝나면 자동으로 부팅되고 계정설정 화면으로 넘어간다. 이제 복구해야겠다. 아.. 귀찬어... 빨라졌을까?? 기대된다.

Android Debug 시 cursor.moveToNext()

디버깅을 하는데 데이터를 몇개 넣어봤는데, 이상하게 정확하게 나오질 않는다. 그래서 , eclipse에서 cursor의 moveToNext() 식을 watchlist에 넣었다. 혹시나 이런 바보같은 일을 되풀이 할까 두렵다. ㅋ watchlist는 메소드를 실행한 결과를 가져오기 때문에 커서의 포인터가 다음으로 이동해버린다. 그래서, 실제로 코드가 실행하면서 커서가 이동하고, watchlist 값을 평가할때 커서가 이동하기때문에 값이 정확하게 나오지 않던것이다. 정확히 커서값을 보며 확인한 결과는 아니지만, 거의 확실하다.(귀찮아서 테스트 안함) 보통 adapter로 해결되지만 가끔 curosr를 사용하고 디버깅할때는 주의해야겠다.

Android Activity 의 lifecycle

이미지
Activity 의 상태에 대한 이해하기 쉬운 그림이다. (구글 이미지 검색으로 퍼왔음) Activity의 상태는 Foreground, Background, 그리고 일부분만보이는 Foreground 상태 3가지가 있다. Foregorund 상태 는 onStart() 이후부터 onStop() 사이이다. 이중 onResume()과 onPause() 사의 상태가 실제로 사용자의 입력을 받을수 있는 Foreground상태이고, onStart()이후와 onStop()이전은 일부분만보이는Foreground상태 (실제로 일부분이 보이거나, 보이지 않을수 있음. 非foreground 상태라고 함)이다. 경고를 표시할때 등, 다이얼로그 박스가 화면에 뿌려지면 非Foreground상태이다. Background상태 는 화면에 보이지 않는다. 보통 onCreate()에서 보통 자원 획득과 초기화를 수행하고, onDestroy()에서 자원을 정리/반납한다. 그래서, 앱을 실행할때 화면에 바로 뜨지 않거나, 종료후에도 실행되는 경우를 볼 수 있다. Activity의 state가 바뀔때마다 해당 메소드를 override 함으로써, 상태변화때 적절한 행동을 할수 있다. 보통 onResume()을 override할때 화면을 다시 그려주고 , pause상태에서는 메모리가 모자랄경우 해당 앱을 죽어버리므로 onPause() 메소드에 상태를 저장하는 코드를 작성한다.

Intent

안드로이드 개발시 Intent는 영어 뜻으로는 "목적","계획" 이다. 아니 "~을 할려고 하는" 이라고 생각하는게 더 쉬울것 같다. 단순 호출은 startActivity(new Intent(this, EditContent.class)); 하면 EditContent activity 를 호출할 수 있다. (현재 activity 스택의 위에 쌓인다) EditContent에서는 finish(); 를 호출함으로써 activity를 끝내고 이전 스택의 내용(이전 activity)이 foreground로 올라온다.

Android Date format

TextView txt = (TextView)findViewById(R.id.txtCal); Date date = new Date(); txt.setText( android.text.format.DateFormat. getDateFormat (ctx).format (date) ); 이렇게 사용하면, 현재 context를 기준으로 locale에 맞게 변환하여 준다.(Context ctx;) DateFormat class는 SimpleDateFormat과 비슷하다. http://developer.android.com/reference/java/text/DateFormat.html

Android Spinner

3일차. 윈도우즈에서는 보통 콤보박스(ComboBox)라 불린다. 리스트(List)라고 불릴때도 있다. Android에서는 Spinner 위젯이다. Graphical layout에서 Spinner 를 가져다 놓은다음 목록을 채우기 위해 해당 activity 생성자에 String[] items = {"쇼핑","여친","약","사랑","우정"}; ArrayAdapter aa = new ArrayAdapter (this, android.R.layout.simple_spinner_item, items); aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(aa); 하면 내용이 채워진다. android.R.layout.simple_spinner_item 등 해당 static final 값들은 왜 저런방식으로 사용하지는 모르겠다. 그냥 R.id._spinner1 처럼 접근 해도 되지 않을까? class명으로 봤을때 Adapter 이면 spinner 위젯이라는 타입만 알면 되는것 아닌가?

학습효과에의한 비용추정

학습효과에의한 비용 추정시 생산비용 = 초기생산비용 * 생산횟수^학습곡선비율 Y n = AN b Yn : 생산비용 A : 초기생산 비용 N : N번째 b : 학습곡선률 학습률r이 90% 이면 b 는 b = log r / log 2 = -0.152 이다. 최초생산 비용A 가 100일때 대입하여 계산하여보면 , 2번째는 90이 나온다. 3번재는 84가 온다. 수학적 개념이 부족해서 왜 자연로그나 상용로그를 사용하는지는 모르겠다.

Intent Exception

2일째. startActivity(new Intent(this, EditContent.class)); 계속 exception이 난다. 먼저 default.properties 파일을 열어봤다. target 이 android-8 로 되어있다. 2.2 는 api level 이 8 이므로 정상으로 보인다. 혹시나 해서 android-7로 고치고 layout의 xml을 다 지우고 다시 만들었다. 실행해보니 emulator가 서버린다. 다시 8로 고치고 결국 구글링... reference를 찾아보니 startActivity 메소드는 ActivityNotFoundException 을 발생시켜서 일단 catch해주고, Exception 도 catch 해주었다. 아무생각없이 e.printStackTrace(); 했더니 아무것도 안나온다. ㅋ 대신에 Log.d("myTag", e.getMessage() ); 를 넣어주고 android.util.Log 패키지를 import 해주었다. elipse에서 perspective 를 DDMS로 바꾸고, log창을 보니 explict activity class를 찾을수 없다고 나온다. Unable to find explicit activity class {org.alwaysn00b.finance/org.alwaysn00b.finance.EditContent}; have you declared this activity in your AndroidManifest.xml? 이런.. AndroidManifest.xml에서 Activity를 추가해주어야한다. 해보니.. 잘된다. ㅡㅡ; 책하나 제대로 된거 한번 봐야겠다.

Emulator가 구동이 안될때

emulator: ERROR: bad config: virtual device directory lacks config.ini AVD Manager 에서 이런 에러 메시지가 나오면서 구동이 안될때 AVD의 path가 한글이 포함되어서이다. android move avd -n avd_name -p move_to_path 하면 avd를 옮길 수 있는데 계속 옮길수 없다고 나오길레 (윈도우 7사용중, 관리자모드로 안됨) 그냥 지우고 명령줄에서 android create avd -n avd_name -p create_path 해서 만들어 줬다. create_path 역시 한글이 있으면 안된다. [출처] Emulator가 구동이 안될때 | 작성자 동훈