SyncAdapter periodicsync() déclenche pas

Je suis en train ty comprendre comment la syncAdapter travaux, j'ai utilisé le sampleSync Adaptateur comme un exemple/point de départ et j'ai fondé mon premier test. La seule différence est que je ne travaille pas avec les contacts par défaut du fournisseur, mais que j'ai besoin d'un de mes propres.

Cette méthode est un peu la même chose que dans le sampleSyncAdapter démo (en AccountAuthenticatorActivity), j'ai juste ajouté le périodique de synchronisation.

    public void finishLogin(String authToken) {
    Log.i(TAG, "finishLogin()");
    final Account account = new Account(mUsername, "be.company.syncAdapterTest");
    if(mRequestNewAccount) {
        mAccountManager.addAccountExplicitly(account, mPassword, null);
        ContentResolver.setIsSyncable(account, MY_AUTHORITY, 1);

        Bundle params = new Bundle();
        params.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
        params.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false);
        params.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false);           
        ContentResolver.addPeriodicSync(account, MY_AUTHORITY, params, 30);
        ContentResolver.setSyncAutomatically(account, MY_AUTHORITY, true);
        ContentResolver.requestSync(account,MY_AUTHORITY,params);
    } else {
        mAccountManager.setPassword(account, mPassword);
    }
    final Intent intent = new Intent();
    intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, "ACCOUNT_TEST");
    intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, "be.company.syncAdapterTest");
    setAccountAuthenticatorResult(intent.getExtras());
    setResult(RESULT_OK, intent);
    finish();
}

Dans le perfomSync() méthode que j'ai la méthode suivante:

    @Override
public void onPerformSync(Account account, Bundle extras, String authority,
        ContentProviderClient provider, SyncResult syncResult) {
    Log.d(TAG, "onPerformSync() start");
    //Testje
    try {
        final String authToken = mAccountManager.blockingGetAuthToken(account, "be.company.syncAdapterTest", NOTIFY_AUTH_FAILURE);
        Log.d(TAG, SAPNetworkUtilities.getWeek(account, authToken, getRandomDate()));
    } catch (OperationCanceledException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    } catch (AuthenticatorException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    }
    Log.d(TAG, "onPerformSync() end");
}

Ici, je viens de l'appeler un simple SAP webservice et de l'afficher dans le journal. Maintenant, j'ai deux questions suivantes:

  1. La SYNCHRONISATION ne démarre pas automatiquement lorsque je ajouter mon Compte dans les paramètres. J'ai besoin d'aller à l'intérieur du compte et cochez la case pour démarrer la synchronisation?
  2. La synchronisation n'est pas triggerd toutes les 30 secondes dans cet exemple... Dois-je ajouter quelque chose dans la perfomSync() la méthode afin de laisser le système de savoir que la synchronisation est effectuée et que la prochaine course peut commencer?

En ce moment je n'écris pas de les valeurs dans le contentProvider, juste parce que je suis à essayer de comprendre comment la synchronisation fonctionne dans le détail.

Actuellement je suis en essais sur l'émulateur Android.

Merci d'avance pour vos commentaires.

Salutations,

Robin

double possible de Pourquoi ne ContentResolver.requestSync de ne pas déclencher une synchronisation?
J'ai mis un periodicSync avec la fréquence <60, et a vu un logcat message que le système avait arrondi jusqu'à 60 ans - un minimum pour ne pas mentionnés dans la documentation. Bien sûr, je ne serais pas la lecture de cette page si elle avait ensuite disparu sur la réalité de la synchronisation à tous - periodicSync ne fonctionne pas pour moi non plus, indépendamment de setIsSyncable ou stackoverflow.com/questions/7925802/...
Avez-vous trouvé une réponse à cela?

OriginalL'auteur rpan | 2013-03-26