2017-01-24 1 views
1

주기적으로 서버에 데이터를 보내는 응용 프로그램이 있습니다. 배터리 사용에있어 가장 좋은 방법이 무엇인지 알고 싶습니다.잠시 후 다시 시작하면 안드로이드 서비스를 중단해야합니까?

내가 내 데이터를 전송 한 후 서비스를 중지해야 (stopSelf() 전화) 또는 onCreate()onDestroy() 같은 방법을 다시 호출되지 않도록 나는 서비스를 중지하지 않고 startService()를 호출 다음 시간까지 기다립니다.

서비스 호출 간의 시간 간격은 약 1 분 정도입니다.

+1

서비스를 중지하고 필요할 때 다시 시작하는 데는 아무런 문제가 없습니다. 모든 작업이 완료된 후 IntentService 인 경우 .stopSelf()를 호출하지 않고 자체적으로 중지됩니다. – Isaac

답변

3

여기서 가장 좋은 방법은 JobScheduler을 사용하는 것입니다. 그것은 이미 배터리 사용량, 일괄 처리 작업 및 기타 최적화가 많이 최적화되어 있습니다.

ComponentName serviceName = new ComponentName(context, YourDataSyncService.class); 
    JobInfo jobInfo = new JobInfo.Builder(JOB_ID, serviceName) 
      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) 
      .setPeriodic(60000) //1 min 
      .build(); 

    JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); 
    int result = scheduler.schedule(jobInfo); 
    if (result == JobScheduler.RESULT_SUCCESS) Log.d(TAG, "Job scheduled successfully!"); 

당신이 당신의 서비스 실행을 떠날 필요가 없습니다이 경우 : 여기

은 예입니다.

당신의 API 레벨이 < (21)의 경우, 서비스는 사용자의 응용 프로그램과 서버 사이의 데이터를 동기화하는 경우는

FireBase job dispatcher이 또한 확인하십시오 - 당신은 특히이 설계되었습니다 SyncAdapter를 확인할 수 있습니다.

관련 문제