- 전체
- android studio
- Android SDK
- Android NDK
- Android ADK
- Android Etc. Lib.
- Android dalvik VM
- Android 보안
- PhoneGap
- AOSP 개발
- MIT App Inventor 2
- kivy (python)
- ionic framework
- Kotlin (코틀린)
- React Native
Android SDK [Android] 부팅시 서비스(Service) 재실행하기 (항상 실행)
2016.03.02 12:06
[Android] 부팅시 서비스(Service) 재실행하기 (항상 실행)
[Android] 부팅시 서비스(Service) 실행하기
지난 시간까지 잠금화면 개발시 죽지 않는 서비스를 만드는 방법에 대해 알아보았습니다. 이번 시간에는 TaskKiller에 죽지 않는 서비스에 더해서 기기 전원이 꺼졌다가 켜졌을 때 자동으로 서비스를 실행하는 방법에 대해 알아보겠습니다. 만약 전원이 꺼졌다 켜졌을 때 우리가 만든 잠금화면 서비스가 실행되지 않는다면 .. 잠금화면으로서 10% 부족할 것입니다. 다시 앱을 켜야 실행이 될테니까요. 사용자들은 뭐야 .. 폰 껏다키니까 안되네? 라며 떠나겠죠 .. ㅜ 그럼 이제~ 부팅시 서비스를 실행시키는 방법에대해 알아보겠습니다.
우선은 부팅시 시스템이 broadcast 해주는 intent를 받아낼 BroadcastReceiver를 작성합니다.
public class BootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Intent i = new Intent(context, ScreenService.class);
context.startService(i);
}
}
}
시스템이 부팅되면서 안드로이드 os에서 ACTION_BOOT_COMPLETED 요녀석을 broadcast 해줍니다. 그것을 받아서 우리가 만들어둔 서비스를 실행하면 되는 것입니다. 요것만 알고 있으면 아주 쉽게 해결되는데 말이죠~ 이렇게 BroadcastReceiver를 만들고 Manifest.xml에 등록해줍니다.
<receiver
android:name=".BootReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
요렇게 추가해주면 "android.intent.action.BOOT_COMPLETED" 이 부분이 곧 Intent.ACTION_BOOT_COMPLETED 이라는 걸 다들 아시겠죠 ! android:enabled="true" 이 부분은 시스템이 알아서 BootReceiver를 실행한다는 뜻입니다. android:exported="false" 이 부분은 외부 어플리케이션에서는 사용할 수 없으며 같은 앱 또는 같은 UserId를 가진 놈만 호출할 수 있다는 뜻입니다~
또한 중요한점 ! 부팅시 서비스 시작하는 기능을 사용하려면 권한(permission)이 필요합니다. 따라서 Manifest.xml에 아래의 권한을 추가해줘야 합니다.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
네 요기까지~ 부팅시 서비스 시작하는 방법에대해 알아보았습니다! 다음시간에는! 앱이 업데이트 되었을 때도 서비스가 종료된답니다 ㅠㅠ 그래서 앱이 업데이트 되었을 때 서비스 실행하는 방법을 알아도록 하겠습니다~ 궁금한점은 댓글 달아주세요!
[출처] http://ccdev.tistory.com/27
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 13 |
빠르게배우는 안드로이드 Fragment-4(Fragment간 에 데이터전달)
| 졸리운_곰 | 2020.09.19 | 155 |
| 12 |
빠르게배우는 안드로이드 Fragment-3(Fragment기초 실습)
| 졸리운_곰 | 2020.09.19 | 209 |
| 11 | 빠르게배우는 안드로이드 Fragment-2(Activity-> Fragment로 쉽게 변경) | 졸리운_곰 | 2020.09.19 | 236 |
| 10 |
빠르게배우는 안드로이드 Fragment -1 (배경)
| 졸리운_곰 | 2020.09.19 | 194 |
| 9 |
안드로이드 스튜디오 - 새로 생성한 Activity Class를 쉽게 Manifest에 등록하기.
| 졸리운_곰 | 2020.08.08 | 252 |
| 8 |
Android Studio Build시 failed linking references 해결방법
| 졸리운_곰 | 2020.05.05 | 648 |
| 7 |
[안드로이드 스튜디오] COULD NOT FIND COM.ANDROID.TOOLS.BUILD:GRADLE:3.0.0-BETA6
| 졸리운_곰 | 2020.05.05 | 125 |
| 6 |
Android Sync SQLite Database with Server using PHP and MySQL
| 졸리운_곰 | 2019.02.25 | 7762 |
| 5 |
안드로이드의 MVC, MVP, MVVM 종합 안내서
| 졸리운_곰 | 2019.01.06 | 370 |
| 4 |
Getting Started: WebView-based Applications for Web Developers
| 졸리운_곰 | 2018.09.03 | 410 |
| 3 |
Android Asynchronous Http Client
| 졸리운_곰 | 2017.07.03 | 709 |
| 2 |
android studio 2.3 의 안드로이드 레이아웃 배치 법 : Layout Editor로 UI 빌드
| 졸리운_곰 | 2017.03.09 | 534 |
| 1 |
Android Studio 2.2에서 Layout Preview 한글 깨짐 현상 해결 방법
| 졸리운_곰 | 2017.03.08 | 568 |

