public final class ActivityManagerService extends ActivityManagerNative { ... static final int BROADCAST_FG_TIMEOUT = 10 * 1000; static final int BROADCAST_BG_TIMEOUT = 60 * 1000; ... } 안드로이드 API 15 ICS 버전까지의 Broadcast Receiver의 시간제한 Broadcast Receiver도 Main Thread에서 처리되기 때문에 ANR이 존재한다. 정확한 Broadcast Receiver의 시간제한은 안드로이드 버전별로 차이가 있다. Foreground vs Background (Broadcast) Foreground Broadcast는 우선..
하나의 Activity에서 또 다른 Activity를 호출하는 방법은 위 두가지 방법이 있다. 위 두가지 함수 모두 생성되는 Activity에게 Intent를 전달하게 되면 새로운 Activity가 실행된다. startActivityForResult 함수는 startAcivity 함수와 동일하게 동작하지만, 역으로 새로 생성된 Activity에서 기존 Acitivity로 데이터를 전달하는 기능이 추가된 함수이다. 결과적으로 startActivityForResult 함수는 이러한 형태로 역으로 Intent를 한번 더 돌려주게 된다. 전송측 코드 public void onClick(View v) { switch(v.getId()) { case R.id.load_pic_url_btn: Intent intent..
이 포스트를 읽기전 반드시 이전 포스트 "패키지와 프로세스"를 읽길 바란다. https://ch4njun.tistory.com/100 [Android] Android에서 프로젝트와 프로세스 ★★★ ch4njun.tistory.com 앞서 설명했던 Service중에서 마지막으로 Remote Bound Service에 대해 설명하겠다. 기존에 내가 계속계속 이해가 안됐던 부분은, Remote Bound Service는 서로 다른 Process에서 동작하는 Service에 Component가 Bound 되어서 해당 Service의 기능을 사용한다는 것인데, 그러면 하나의 Package에는 Activity, 또 다른 Package에는 Service를 구현한 상태로 진행이 가능하다는 뜻인건데 왜 도대체 예제가 하..
우리는 안드로이드 프로그램을 제작할 때 안드로이드 스튜디오에서 프로젝트를 생성한 후 프로젝트 단위로 프로그램을 제작하게 된다. 그러면 여기서 궁금증이 생기는데, 과연 하나의 Package 내부의 코드는 하나의 Process로써 동작할까 ? 답은 "별 다른 설정이 없다면 그렇다 !!" 이다. 그러면 어느경우에 위에서 말한 별 다른 설정을 해줄까? 그리고 하나의 Process로써 동작하게되면 발생할 수 있는 문제에는 어떤 것이 있을까? * 만약에 하나의 패키지에 Activity, Receiver, Service를 모두 구현했다면 ? 1. Background에서 Service가 계속 실행되고, Activity는 Foreground에서 실행된다. 이 때 Activity에서 Exception이 발생하게 된다면 해..
이번 포스팅에서는 Bound Service 를 이용해서 Local Service를 구현하는 방법에 대해 설명한다. Local Bound Service에 대한 설명에 앞서 Bound Service의 특징에 대해서 먼저 설명하겠다. 기존에 Stared Service에서는 서비스의 시작이라는 표현을 사용했지만 Bound Service는 라이브러리와 같은 동작방식을 갖기 때문에 서비스 연결 시작(Import의 개념..?) 이라는 표현을 사용한다. Bound Service의 특징 1. Started Service와 다르게 Service를 실행시킨 Component와 Bound된 Service 사이에 상호작용할수있는 인터페이스가 제공된다. Started Service는 Component가 Service를 실행시키고..
이전 포스팅에서 startService에 대해 설명했는데, startService에는 동기화 문제가 있다고 설명했다. 때문에 이를 대체할 IntentService라는 놈을 소개하겠다. 장점 1. 애초에 Sub Thread로 동작하기 때문에 별다른 Thread작업을 해주지 않아도 된다. (ANR 걱정 X) 2. 동기화 문제에 대해서 내부적으로 처리가 되어있어 신경쓰지 않아도 된다. (동기화 걱정 X) 여러 클라이언트에서 해당 Service를 시작시켜도, 순차적으로 동작하게끔 내부적으로 동기화 처리가 되어있다. 3. 구성이 간단하다. → Overriding해야하는 Method가 한개이다. 기존에 startService에서 onStartCommand에 Service에서 할 작업에 대해 작성했다면, Intent..