2

저는 iOS 개발자이며 최근에 Android 개발을 시작했습니다. 현재 내가하고 싶은 배경에서 원격 자원에 대한 반복 검사 (A JSON 파일)을 수행 할 수있는 응용 프로그램이 필요합니다 : 응용 프로그램의 하위 클래스에서 작업을 반복 예약 된 함 앤지Android에서 백그라운드 예정된 반복 작업을 수행하고 IntentService와 Runnable 간의 차이점을 수행합니다.

  1. 앱이
  2. 을 실행 완료를
  3. 이 원격 JSON 파일의 변경이 나는 이것을 달성하기 위해 여러 가지 방법이있을 것 같습니다 것을 발견 몇 가지 조사를 수행 한 후 그에 따라

그것을 처리 할 경우 나는 그들 중 일부를 배제 할 수있는 반면

  • 응용 프로그램이 발견됩니다 , 나는 정말로 말할 수 없다. 그는 나머지와 내가 사용해야하는 차이가있다.

    1. ScheduledThreadPoolExecutor
    2. IntentService
    3. AlarmManager
    4. Runnable (어쩌면 postInBackgroundDelayed/DelayedRunnable, 또는 함께 :

      나는 내가 다음과 같은 클래스를 사용할 수 있습니다, 즉 예약 된 반복 작업을 수행하는 것으로 나타났습니다 ScheduledExecutorService?)

    여러 작업자 스레드가 필요할 때이 가장 잘이 내 경우에는 난 단지
  • AlarmManager 하나를 필요로하는, 사용되는 것을

    1. ScheduledThreadPoolExecutor가, 내가 읽은 : 10

      와 나는의 사용을 배제했습니다

      : 응용 프로그램이 실행되지 않는 경우에도 때 난 단지 작업을 필요로하는 동안 응용 프로그램은 지금까지 나의 이해에서 IntentService 있습니다

    그리고 나머지

  • Runnable를 실행 중일 때 수행하기 위해 실행됩니다
    1. IntentService가 필요 시작하고 서비스에 텐트를 전송하여 수동 작업 호출을 중단하고 그 결과 목표-C에서 사용되는 블록 코드의 특정 세그먼트처럼
    2. Runnable
    3. 를 방영 할 적절한 시간에 실행해야합니다.

    이들 이외의 다른 점이 있습니까? 내 이해가 맞습니까? 둘 다 내 일에 적합합니까? 그것은 어느 경우에 사용할 것인지 선택하기 전에 고려해야 할 사항입니까?

    감사합니다.

    답변

    2

    Android에서 장기 실행 백그라운드 작업을 만들려면 서비스을 애플리케이션에 만들어야합니다.

    서비스는 Activity의 우선 순위가 가장 높은 응용 프로그램의 주 스레드에서 실행되며 사용자가 응용 프로그램을 종료 한 경우에도 계속 실행됩니다.

    서비스는 다음과 같은 유형이 있습니다

    • 시작 서비스를
    • 전경 서비스
    • 바운드 서비스
    • 의도 서비스 서비스의 구현에서

    , 다른 스레드를 만들어야합니다 , 예를 들면 ScheduledThreadPoolExecuter사용그리고 수행하려는 작업을 해당 스레드에 위임하십시오.

    귀하의 요구 사항를 들어, 서비스 클래스을 연장하는 간단한 서비스, 을 만들 수 있으며, ONSTART() 방법, 당신을 위해 원하는 작업을 수행하는 스레드를 만들 수 있습니다.