[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에 등록해줍니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

<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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED