3

연락처 동기화 어댑터를 빌드했습니다. 모든 것이 잘 작동하지만 한 가지 더 필요합니다. 어떤 이유로 동기화가 성공적으로 완료되지 않는 경우 동기화가동기화 실패 메시지 표시 방법

Screenshot

+0

이 메시지를 표시하는 방법이나 동기화가 실패했음을 알기 위해 어떤 예외를 잡아야하는지 묻는 중입니까? –

+0

나는 예외를 잡는'onPerformSync'에'catch' 블록을 가지고 있고, 그 블록들에는'syncResult.stats.numParseExceptions ++'와'syncResult.stats.numIoExceptions ++'가 있습니다. 이것이 예외를 잡는 올바른 방법이되기를 바랍니다. 그렇다면 메시지를 표시하는 방법이 필요합니다. – nikmin

답변

7

해결 방법은 동기화 결과에 지연을 설정하는 것이 었습니다. 이 지연 후 동기화가 다시 시작됩니다.

try { 
    DO THE SYNCHRONIZATION 
} catch (AuthenticationException e) { 
    Log.e(TAG, "AuthenticationException"); 
    syncResult.stats.numAuthExceptions++; 
    syncResult.delayUntil = 180; 
} catch (ParseException e) { 
    Log.e(TAG, "ParseException"); 
    syncResult.stats.numParseExceptions++; 
} catch (IOException e) { 
    Log.e(TAG, "IOException"); 
    syncResult.stats.numIoExceptions++; 
    syncResult.delayUntil = 180; 
} 
+3

이 메시지가 표시됩니다. –

+0

화면 하단에 그림과 같은 메시지가 표시되고'syncResult.delayUntil = numOfSeconds; '로 지정된 시간 (초)이 지나면 다시 시도합니다. – nikmin

+0

화면에 아무런 메시지도 표시되지 않습니다. .. – Ixx

-2

을 실패 할 때, 나는 당신이 Toasts

간단한 토스트입니다 원하는 것을 생각 Google 계정과 같은 메시지가 표시되고 보여주고 싶은 :

Toast.makeText(context, text, duration).show(); 

text은 상상할 수있는 텍스트입니다. duration 중 하나 Toast.LENGTH_SHORT 또는 Toast.LENGTH_LONG가 토스트에 그림과

더 복잡한 방법 (토스트는 볼 수 sahll 기간에 따라 다름)입니다 : (sync_toast_lo.xml)

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/SynctoastLayout" 
    android:background="@android:color/black"> 

    <ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:src="@drawable/your_logo" 
    android:layout_toLeftOf="@+id/textView" 
    android:layout_margin="5dip" 
    android:id="@+id/syncLogo"> 
    </ImageView> 

    <TextView 
    android:id="@+id/syncFailedText" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:text="The sync has failed!" 
    android:gravity="center" 
    android:textColor="@android:color/white"> 
    </TextView> 
</RelativeLayout> 

그리고 당신의 코드 :

LayoutInflater inflater = getLayoutInflater(); 
View view = inflater.inflate(R.layout.Sync_toast_lo, 
           (ViewGroup) findViewById(R.id.SynctoastLayout)); 

Toast toast = new Toast(this); 
toast.setView(view); 
toast.show(); 
+0

아니요, 토스트 싶지 않아요. 나는 건배가 얼마나 좋은지 안다. 동기화에 실패하면 Google 계정에 메시지가 표시 될 때 계정에 메시지를 표시하고 정확히 동기화하려고합니다. – nikmin

+0

은 downvoted가되어서는 안됩니다 ... 축배를 가진 유일한 문제는 SyncAdapter의 비 활동 클래스에 있다는 것입니다 .java – Brandon

+0

+ sync가 백그라운드에서 실행되고 bg에서 건배를 보여주는 것이 작동하지 않습니다. – Ixx