Azure 모바일 서비스가 포함 된 Android 앱이 있고 오프라인 동기화가 구현되었습니다. 앱은 잘 작동하지만 데이터를 동기화 할 때 완료되지 않은 것처럼 보이므로 동기화되지 않은 테이블에 항상 행이 몇 개 있습니까?Android Azure 오프라인 동기화 - 동기화 완료 중
누구든지 문제가 무엇인지 알 수 있습니다. 나는 다음 시도에서 그것이 끝난 곳에서 끝내거나 틀렸다고 믿는다. 사전에
감사
Azure 모바일 서비스가 포함 된 Android 앱이 있고 오프라인 동기화가 구현되었습니다. 앱은 잘 작동하지만 데이터를 동기화 할 때 완료되지 않은 것처럼 보이므로 동기화되지 않은 테이블에 항상 행이 몇 개 있습니까?Android Azure 오프라인 동기화 - 동기화 완료 중
누구든지 문제가 무엇인지 알 수 있습니다. 나는 다음 시도에서 그것이 끝난 곳에서 끝내거나 틀렸다고 믿는다. 사전에
감사
브루스의 답변은 괜찮지 만 피들러를 사용할 필요없이 약간 다른 방법을 사용했습니다.
나는이
mClient = new MobileServiceClient("[AZUREWEBSITE]", cntxall).withFilter(
new ServiceFilter() {
@Override
public ListenableFuture<ServiceFilterResponse> handleRequest(ServiceFilterRequest request, NextServiceFilterCallback nextServiceFilter) {
// Get the request contents
String url = request.getUrl();
String content = request.getContent();
if (url != null) {
Log.d("Request URL:", url);
}
if (content != null) {
Log.d("Request Content:", content);
}
// Execute the next service filter in the chain
ListenableFuture<ServiceFilterResponse> responseFuture = nextServiceFilter.onNext(request);
Futures.addCallback(responseFuture, new FutureCallback<ServiceFilterResponse>() {
@Override
public void onFailure(Throwable e) {
Log.d("Exception:", e.getMessage());
}
@Override
public void onSuccess(ServiceFilterResponse response) {
if (response != null && response.getContent() != null) {
Log.d("Response Content:", response.getContent());
}
}
});
return responseFuture;
}
}
);
이
mClient = new MobileServiceClient("[AZUREWEBSITE]", cntxall);
mClient.setAndroidHttpClientFactory(new MyOkHttpClientFactory());
에서 내 연결이 푸른 연결에 대한 로깅 방법과 로그에 요청을 보여줍니다을 변경합니다.
응용이 잘 작동 데이터를 동기화 할 때하지만 그렇게 항상 동기화되지 않은 테이블에 몇 행이 완료하지 않는 것 같다?
fiddler을 사용하여 동기화 작업을 처리 할 때 네트워크 추적을 캡처하는 것이 좋습니다. Incremental Sync를 들어
는 같은 것이다 요청은 다음과 같습니다
Get https://{your-app-name}.azurewebsites.net/tables/TodoItem?$filter=(updatedAt%20ge%20datetimeoffset'2017-11-03T06%3A56%3A44.4590000%2B00%3A00')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true
증분 동기화 밖으로 탈퇴를 들어, 필터 updatedAt
없이 모든 레코드를 검색합니다.
참고 : 항목이 너무 많은 경우 SDK는 관련 검색어와 일치하는 모든 항목을 관련 원격 테이블에서 가져 오기위한 여러 요청을 보냅니다. 또한 쿼리에 includeDeleted()
을 지정해야합니다.
요약하면 위의 요청을 통해 모든 항목을 검색 할 수 있어야합니다. 또한, 풀 동작이 보류중인 로컬 업데이트를 갖는 경우, 풀 동작은 먼저 푸시 동작을 실행할 것이다. 따라서 충돌 해결 처리를 위해 pull 연산을 호출 할 때 예외를 잡을 수 있다고 가정합니다.