- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록안드로이드 (186)
드럼치는 프로그래머
오늘은 JNI 의 Exception 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/exceptions.html#11202 을 요약 정리한 글입니다. Exceptions Introduction. 우리는 지금까지 JNI call 후에 여러가지 error 상황들을 체크해왔습니다. 예제 코드에서 말이죠. 여기서는 어떻게 그런 error 를 detect 하고 recover 하는지를 다룹니다. JNI 의 system call 에서 발생하는 에러는 그저 문서에 기술된 처리만 해주면 됩니다. 하지만, Java API method callback 을 호출한 경우에는 여기서 소개하는 방법에 따라 exception 처리를 해야 합니다. JNI Exceptions O..
갑자기 잘되던 프로그램이 안된다... 당황하다가 다시 마음을 잡고 천천히 디버깅 해보았다. Native와 JAVA 사이에 연결되는 함수가 호출되다가 죽는다. 아래와 같이 반복문이 15회정도 반복되는 함수였다.float correctCount = 0.0f; for( int i = 0; i < 30; i++ ) { if( jni_GetPUnlocked( s, i ) == true ) { correctCount++; } } jni_GetPUnlocked 함수는 JAVA함수를 C언어로 읽어들여 체크하는 함수였다. 함수 내용은 아래와 같다. bool jni_GetPUnlocked(int game, int question) { JNIEnv *env; jclass jNativesCls; bool pUnlocked =..
안드로이드 쓰레드 종료를 위해 Thread.stop(), Thread.suspend() 다 해보았지만 모두 deprecated 되어서 사용하면 안될 뿐더러, 정상 동작 하지도 않는다. 그럼 남은건 interrupt() 하나 뿐인데.. 이걸 쓴다고 해서 쓰레드가 바로 종료되는건 아니더라.. 보니까 interrupt() 쓴다고 쓰레드가 그냥 죽는게 아니고 쓰레드 내부에 직접 구현을 해줘야 했다. 중복 쓰레드 실행 시 이전 쓰레드를 죽이는 것도 처음에 boolean 변수 만들어서 죽여주는 그런 방법으로 시도했다가, interrupt()와 interrupted()를 활용 하는 것이 훨씬 간결 하다는 것을 알았다. 구현 소스는 다음과 같다. ----------------------------------------..
[Intro] 제가 이전에 세미나에서 발표 했던 내용과도 관련이 있는 내용이긴 합니다. Activity를 안전하게 보호하기 위한 방법 중에서, 태그에 있는 exported 속성을 false로 만들어서 다른 어플리케이션에서 접근 할 수 없게 만들 수 있었습니다. 그런데 exported ="false"속성은 다른 어플리케이션에서 전혀 보이지 않게 숨기는 속성이기 때문에, 재사용을 할 수 없다는, 다소 Activity 철학과는 살짝 거리가 있는 속성이기도 합니다. 뭐... 그래도 재사용 필요없는 Activity에겐 유용한 속성이긴 하지요. [exported="false" 를 쓰면 안되는 상황이 있다고?] 예... 그렇습니다. 모든 상황에서 사용 가능한건 아닙니다. 원래 오늘 별 내용 없습니다. 간단한 메모 수..
안드로이드 하면서 알아야 할 큰 개념들을 보면.. Activities(Activity) Services Broadcast receivers Content providers Intent ... ... 더 많이 있겠지만 ㅎㅎㅎ 각각의 설명은 spec이나 좀더 검색을 하면 쉽게 알수 있으니...패쓰 사실 아직 본인도 남에게 설명할만큼 모르니 당연히 패쓰! 실행중인 어플에서 다른 어플을 불러 오고 싶다면 알아야 할 개념이 2개가 있다. Activity, Intent 간단/단순하게 설명하면 Activity 가 어플에 대한 실행 제어권(?), Intent 같은 경우 명령을 전달 좀더 깊이 있는 설명은 패쓰! 결국 다른 어플을 띄우긴 위해서는 Intent 를 이용해서 명령어를 실행(?) 시켜 Activity 가 다른..
4. 객체 직렬화에 대해서 사실 순수하게는 Activity와 객체 직렬화는 다른 얘기이다. 그런데 왜 꼭 이 장에서 객체 직렬화에 대해서 다루고 있는 것일까? 앞으로 배우게 될 각 components 와 components 간에 데이터 전달에 관련한 Intent에서 객체 직렬화가 많이 이용된다. 물론 Activity component에서도 intent라는 녀석을 사용하므로 객체 직렬화에 대한 이해는 꼭 필요하다. 객체 직렬화는 Serializable 객체를 통해 구현 가능하고 추가적으로 Bundle, Parcel, Parcelable 객체도 직렬화를 지원한다. 특히 Bundle, Parcel, Parcelable 객체는 안드로이드 전역에 걸쳐 사용된다. 4.1 Serializable 객체 직렬화의 기본 ..
예외가 발생했을 때, stack trace를 String으로 받는 방법입니다. import java.io.ByteArrayOutputStream; import java.io.PrintStream; public class GetPrintStackTraceIntoString { public static void main(String[] args) { Exception e = new Exception("my exception"); ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream pinrtStream = new PrintStream(out); // 걍 e.printStackTrace()하면 System.out에 찍는데, // 출력할 Pr..
현재 Device 에 실행되고있는 Server와 Process 목록을 볼 수 있다. private void serviceList(){ /* 실행중인 service 목록 보기 */ ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); List rs = am.getRunningServices(50); for(int i=0; i
BroadcastReceiver 를 등록하기 위해선 extends BroadcastReceiver 된 클래스와 manifest에 receiver에 등록 해주어야 한다. ========================================================== 테스트 하기 위한 Activity import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import and..
ServiceConnection 를 사용할경우 stopService()함수로 멈출수 없다... 그래서 bindService(intent, srvConn, BIND_AUTO_CREATE);에 BIND_AUTO_CREATE 0으로 리셋한후 stopService()함수를 사용한다... [출처] http://blog.naver.com/PostView.nhn?blogId=vivacha11&logNo=80116329687&categoryNo=29&viewDate=¤tPage=1&listtype=0