2013-08-09 5 views
0

필자가 작성한 Android 용 Xamarin 앱이 있는데 내 앱의 일부 정보를 저장할 웹 서비스로 보내야하는 경우가 있습니다. 나는 여전히 안드로이드 프레임 워크에 대해 비교적 새로운 것이지만 IntentService가 합리적인 선택 인 것처럼 보이므로 내 메인 스레드에서 해당 작업을로드 해제 할 수 있습니다.IntentSevice 작업 큐 처리

그러나 IntentService가 보낸 요청에 대한 작업 대기열을 관리하는 방법에 대해서는 조금 애매합니다. 특히, 처리 중에 관련된 실패가있을 때 서비스에 대한 작업 대기열 요청은 어떻게됩니까? 예를 들어 제 경우에는 Wi-Fi/3G 연결이 가능하지 않으며 웹 서버를 사용할 수 없다고 말합니다. 이러한 문제를 파악하여 서비스에 다시 제출해야하거나 서비스에서 내부적으로 처리 할 수있는 방법이 있습니까 ?

Android 서비스 문서 (http://developer.android.com/guide/components/services.html)를 통해 읽었 으면 요청이 수신 및 폐기 된 것으로 처리되는 것처럼 보입니다. 문제가 발생하면 대기열에 요청을 보관하는 방법에 대해 언급하지 않았습니다. 개발자가 수동으로 대기열에 다시 추가하십시오.

누락 된 것이 있습니까? 아니면 이러한 문제를 처리하기 위해 내 서비스 클래스를 사용해야합니까? 어떤 생각이라도 감사 할 것입니다. 감사.

답변

1

인 텐트 서비스는 onHandleIntent(Intent intent) 방법으로 수행 할 내용만을 처리합니다. 구워진 오류 처리는 없습니다. 왜냐하면 모든 구현이 IntentService 일 때 네트워크 요청이나 특정 작업을 수행 할 것이기 때문이 아닙니다. 유일한 보장은 onHandleIntent() 내부의 코드가 작업자 스레드에 있다는 것입니다.

+0

감사합니다. 나는 그 서비스가 특정한 일을 함축한다는 것을 의미하지는 않았다. 그것은 나의 예일 뿐이다. 그러나 수행되는 작업에 관계없이 가장 단순한 작업을 제외하고는 실행 중에 오류/제약 조건이 발생할 수 있습니다. 나는 서비스가 요청이 처리되었다는 것을 프레임 워크에 알려주는 메커니즘이 없다는 사실에 놀랐다. (예를 들어, onHandleIntent 메소드에서 처리 된 플래그는 onStartCommand에서 다시 전달할 수있는 값과 매우 비슷하다.) . 또는 실패한 요청을 올바르게 처리하는 방법에 대한 문서를 적어도 일부 작성해야합니다. – ricke

+0

안드로이드 워드 프로세서를 다시 확인한 후, 결과가 서비스에서 반환 될 수 있도록 PendingIntent를 찾고 있다고 생각합니다. 내가 처음 어떻게 그걸 놓쳤는 지 모르겠다. :) – ricke