Sub Thread에서 UI수정이 필요할 경우에 Sub Thread에서 직접 수정할 수 없다. 왜냐하면 여러 Sub Thread가 존재할 때 동시에 접근할 수 있는 동기화문제가 존재하기 때문이다. Q. 그러면 Sub Thread에서 처리하는 내용은 전부 UI와 관련 없는 내용이여야할까?? A. 그건 말도안됨; Message를 생성하는 방법은 Message.obtain~~~ 혹은 mHandler.obtainMessage~~~ 이 있다. 이 두가지의 차이점이 없기 때문에 기억만해두고 편리한걸 이용하면 될 듯하다. 그래서 Sub Thread에서 UI 수정이 필요할 경우 Main Thread에 Request를 보내서 처리하게 된다. 이 때 Sub Thread는 Handler와 Message를 사용해서 Reque..
뭐 Thread가 무엇인지 Process와 Thread에 대한개념적인 내용은 건너뛰고 안드로이드에서 Thread를 사용하는 포인트와 사용할 때 자주 사용되는 형태에 대해서만 설명하겠다. Thread의 기본적인 사용법은 JAVA와 동일하다. ( Runnable 까지도 ... ) Thread thread = new Thread() { public void run() { // ... } } thread.start(); Thread t = new Worker(); t.start(); class Worker extends Thread { public void run() { // ... } } new Thread() { public void run() { // ... } }.start(); Thread t = ne..
Operand should contains 1 column(s) 에러는 Error Based Sql Injection을 진행하는 과정에서 발생하는데 주로 where절에서 서브쿼리를 사용했을 때 발생한다. 에러를 해석해보자면 1 = (select 1, 2 from dual) 라는 구문이 있을 때 왼쪽에서는 1개의 column인데 오른쪽은 2개의 column이 서브쿼리의 결과로 나온다. 이 때 왼쪽의 컬럼의 갯수가 1개라는 부분이 에러에 드러나는 것이다. " 야 ! 나 왼쪽에 컬럼 1개여야 비교가능해 !! " 라는 뜻이다. 조금 더 생각해보면 row(1, 1) = (select 1, 2, 3 from dual) 의 경우 왼쪽의 컬럼의 수가 2개기 떄문에 Operand should contains 2 colu..
예제를 진행하면서 어플에 권한을 부여하는 방법에 대해서 진행하겠다. ( SMS를 받았을 때의 Broadcast를 Receive할 수 있는 권한 획득 ) 1. 사용할 권한을 AndroidManifest.xml 에 등록. // 권한을 사용자에게 요청(Request)한다. ← 위와같은 구문을 나열해서 필요한 권한을 모두 등록한다. 2. 권한등록이 별도로 필요한지 확인. ( SDK 23 이상은 필요 ) Android 6.0 (SDK 23) 이후 앱이 설치될 때가 아니라 앱이 실행되는 중에 앱에 권한을 부여하도록 정책이 변경되어서 이와 같은 권한등록이 별도로 필요하다. 3. protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta..
Receiver ? 안드로이드의 4대 컴포넌트중 하나로 그 중에서 가장 간단하다. 안드로이드 시스템에서 벌어지는 일중에 앱이 알아야하는 상황이 발생하면 BroadCast(방송)가 뿌려지는데 특정 앱에서 이 BroadCast를 받아들이고 그에대한 동작(액션)을 수행하는 역할을 하는 컴포넌트가 바로 Receiver 이다. 특히 이런 BroadCast를 수신하기 위해 사용되는 Receiver를 Broadcast Receiver 라고 부른다. 리시버는 크게 정적리시버, 동적리시버로 구분된다. 정적리시버. 리시버 클래스를 별도로 생성하고 그에대한 내용을 정의해둔다. 그렇기 때문에 정적리시버를 한번 등록하면 해제할 수 없다. public void onClick(View v) { Intent intent = new ..
액티비티의 생명주기란 액티비티의 상태를 몇개로 분류하고, 그 상태에 따라서 대처할수있는 함수를 제공하는 것을 뜻한다. 우리가 그간 사용해왔던 onCreate 함수가 액티비티 생명주기함수중에 대표적인 함수이다. 이렇게 액티비티 생명주기 함수를 사용해 프로그래밍 하는 이유는 전화, 화면 회전 등 다양한 상황에서 Application을 정상적으로 동작시키기 위함이다. onCreate → onStart → onResume → 동작 (필요한 객체들을 할당) 동작 → onPause → onStop → onDestroy (JVM에 의해 해제) 추가로 onRestart가 있는데 onStop 상태에서 onStart로 가는 중간과정이 되겠다. 상황별 생명주기 함수 호출 루틴 1...