안드로이드 관련 포스팅 목록
2020/07/07 - [Android] - 안드로이드 서비스 등록/실행(Service Intent)
2020/07/06 - [Android] - 안드로이드 WIFI 연결 상태 확인(Android Wifi, Connected)
2020/06/23 - [Android] - 안드로이드 버튼 클릭 이벤트 처리 예제 - 3
2020/06/23 - [Android] - 안드로이드 버튼 클릭 이벤트 처리 예제 - 2
2020/06/22 - [Android] - 안드로이드 버튼 클릭 이벤트 처리 예제 - 1
2020/06/21 - [Android] - 안드로이드 타이틀바 제거
목차
API의 필요성
안녕하세요. 오늘은 이전 포스팅에서 소개했던 안드로이드 서비스 실행 방법에 이어서 서비스를 안드로이드 핸드폰이 부팅될 때 자동 실행되도록 하는 방법에 대하여 알아보겠습니다. 만약 서비스 구성 방법이나 실행 방법에 대해 잘 모르는 상태라면 아래 링크를 타고 이전 서비스 실행 방법을 먼저 읽고 진행하는 것을 추천드리겠습니다.
2020/07/07 - [Android] - 안드로이드 서비스 등록/실행(Service Intent)
부팅시 서비스가 구동되야하는 이유는 여러가지 있습니다. 예를들어 카카오톡 앱의 경우 상대방이 전송한 채팅 내용을 듣고 우리에게 표시하기 위해서 매 순간 켜져 있어야 합니다. 따라서 서비스를 핸드폰이 부팅되면 바로 실행되야할 필요성이 있습니다.
이는 예전과 마찬가지로 백그라운드 처리라고 하며 언제 어떤 이벤트가 발생하더라도 항상 들을 수 있는 준비가되어있는 프로그램을 의미합니다.
마치 군대에서 5분 대기조가 편성되듯이 컴퓨터 세상에서도 이런 목적으로 있는 프로그램들이 있는 것이지요. 부팅시 서비스를 실행시키는 방법 자체는 간단합니다.
권한 설정
부팅 완료 알림 받을 수 있도록 앱에 권한 설정
...
<users-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
...
...
</application>
위의 권한은 안드로이드 핸드폰이 부팅되었을 때 부팅이 완료되었다고 알림을 받을 수 있도록 권한 설정하는 부분입니다. 프로젝트의 AndroidManifest.xml의 <application> 태그 위에 선언합니다.
부팅 완료 알림 수신시 서비스 실행하도록 하는 리시버 등록
...
</activity>
<receiver
android:name = ".BootReceiver"
android:enabled = "true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
...
이제 부팅이 완료되었다는 알림을 수신하는 리시버를 등록해줍니다. 코드상에서 등록하지 않고 AndroidManifest.xml에 리시버를 등록합니다. 등록 <Activity> 태그 아래에 선언합니다.
리시버 구현
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Intent tempService = new Intent(context, TempService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(tempService);
} else {
context.startService(tempService);
}
}
}
}
위와 같이 MainActivity.java 소스코드와 동일한 레벨의 위치에 BootReceiver.java 브로드 캐스트 리시버 클래스를 생성합니다. 사전에 AndroidManifest.xml에 부팅될 때 알림을 수신 받을 수 있도록 권한 설정을 하였기 때문에 부팅이 완료되면 이 리시버에 알림시 수신됩니다.
이때 "android.intent.action.BOOT_COMPLETED" 액션인지 아닌지 구분하여 우리가 이전 포스팅에서 진행했던 것처럼 서비스를 실행시키는 구문을 추가합니다.
마무리
이번 포스팅에서는 안드로이드 환경에서 서비스가 핸드폰이 부팅될 때 자동으로 시작하도록 하는 방법을 알아보았습니다.