그러냐

부팅시 서비스(Service) 실행하기 본문

android

부팅시 서비스(Service) 실행하기

관절분리 2016. 1. 28. 10:59
반응형

출처 : http://ccdev.tistory.com/27




[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를 가진 놈만 호출할 수 있다는 뜻입니다~

 

<ins class="adsbygoogle" style="width: 728px; height: 90px; display: inline-block;" data-adsbygoogle-status="done" data-ad-client="ca-pub-2280832699626440" data-ad-slot="5266823817"><ins id="aswift_2_anchor" style="margin: 0px; padding: 0px; border: currentColor; border-image: none; width: 728px; height: 90px; display: block; visibility: visible; position: relative; background-color: transparent;"><iframe name="aswift_2" width="728" height="90" id="aswift_2" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" vspace="0" hspace="0" allowfullscreen="true" style="left: 0px; top: 0px;" allowtransparency="true"></iframe></ins></ins>

 

또한 중요한점 ! 부팅시 서비스 시작하는 기능을 사용하려면 권한(permission)이 필요합니다. 따라서 Manifest.xml에 아래의 권한을 추가해줘야 합니다.

 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

 

네 요기까지~ 부팅시 서비스 시작하는 방법에대해 알아보았습니다! 다음시간에는! 앱이 업데이트 되었을 때도 서비스가 종료된답니다 ㅠㅠ 그래서 앱이 업데이트 되었을 때 서비스 실행하는 방법을 알아도록 하겠습니다~ 궁금한점은 댓글 달아주세요!  

 

반응형