낭만 프로그래머

Android 에서 JobIntentService를 사용하여 Background 작업하기 본문

Android

Android 에서 JobIntentService를 사용하여 Background 작업하기

조영래 2018. 11. 16. 12:19

서비스를 이용하여 Widget을 업데이트 하는 기능을 개발하였다.
하지만 API 26 이상으로 compileSdkVersion 과 targetSdkVersion을 26 으로 올리고 난 이후 부터 java.lang.IllegalStateException 가 발생하기 시작해서 JobIntentService 를 사용해서 Background 작업 하는 것으로 수정 하였다

1. JobIntentService를 상속하여 Service 파일 생성


 public class Update2x3Service extends JobIntentService {
    static final int JOB_ID = 1001;
    static void enqueueWork(Context context, Intent work) {
        enqueueWork(context, Update2x3Service.class, JOB_ID, work);
    }

    @Override
    protected void onHandleWork(Intent intent) {
        //여기에 작업
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //작업완료
    }
 }


2. JobIntentService 호출
WorkerResultReceiver 를 사용 할 수 있으나 단순하게 호출


 
Update2x3Service.enqueueWork(context, new Intent());


3. AndroidManifest.xml 파일에 내용 추가


 
<uses-permission android:name="android.permission.WAKE_LOCK" />
  ...
 
<service android:name="Update2x3Service" android:permission="android.permission.BIND_JOB_SERVICE"></service>


참조 : http://thoughtnerds.com/2018/02/best-practise-jobintentservice-android-example/
        https://medium.com/til-kotlin-ko/android-o%EC%97%90%EC%84%9C%EC%9D%98-%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-jobintentservice-250af2f7783c