IntentService를 사용해보십시오. 참조에서 :
IntentService는 요청시 비동기 요청 (인 텐트로 표시됨)을 처리하는 서비스의 기본 클래스입니다. 클라이언트는 startService (Intent) 호출을 통해 요청을 보냅니다. 서비스는 필요에 따라 시작되고, 작업자 스레드를 사용하여 차례로 각 인 텐트를 처리하고 작업이 종료되면 자체를 중지합니다.
// Now let the service module do the rest
Intent serviceIntent = new Intent(context, Service.class);
serviceIntent.putExtra(GC.EXTRA_SERVICE_DATA, serviceData);
ComponentName compName = context.startService(serviceIntent)
그것은 같은 광고 일을 다음과 같이
는 내가 방송 수신기에서 서비스를 실행. 요청은 잘 serialize됩니다. 요청이 수신되면 서비스가 시작되었습니다. 마지막 요청이 처리 된 후 서비스가 중지되었습니다. 요청은 FIFO로 처리되었습니다.
원본 패키지 이름을 마우스 오른쪽 단추로 클릭하고 새로 만들기/클래스를 선택하여 intentservice를 만들었습니다. 저는 intentservice를 수퍼 클래스로 사용했습니다. 생성자에는 'name'이라는 인수가 있습니다. 나는 다음과 같이 변경했다 :
public XxxService() {super("XxxService");}
서비스의 모든 코드는 onHandleIntent 함수로 전달되었다. 다른 @Override 함수를 사용할 필요가 없었습니다. 이것은 당신이 원하는 무엇
희망 ...
참고 : 변수 '문맥'onReceive에 전달 된 매개 변수입니다. 코드의 이름을 XxxxService에서 'Service'또는 'service'로 변경했습니다. 마지막으로 GC라고하는 모든 프로젝트에 클래스를 만듭니다. 전역 상수에 대한 컨테이너 클래스입니다. GC.EXTRA_SERVICE_DATA는 여분의 키를 정의하는 전역 문자열입니다.
AsyncTask는 내 작업 (서버로 파일 업로드)에 완벽하게 보일 것입니다. 그것은 직렬화가 나를 괴롭히는 것입니다. 서비스를 사용해 볼 수도 있지만 AsyncTask는 유연성이 뛰어나고 반복적으로 Activity에서 호출되기 때문에 가장 좋은 방법이라고 생각합니다. – dulys
intentservice의 목적 중 하나는 파일을 업로드/다운로드하는 것입니다. 반복적으로 호출 될 수 있습니다. 일련 번호가 지정된 것은 활동의 호출입니다. 기본적으로 이것은 방금 말한 모든 것을위한 것입니다. –
그것은 매력처럼 작동합니다, 많이 고마워요! – dulys