Android 多次调用SyncStatusObserver中的onStatusChanged()

Android 多次调用SyncStatusObserver中的onStatusChanged(),android,android-contentprovider,Android,Android Contentprovider,在我的应用程序中,我需要从谷歌日历中显示即将到来的活动。我已经做了。为了跟踪新事件(添加到Google日历web版本中的事件),我决定请求日历同步,如中所述 它工作得很好,但我注意到onStatusChanged(int)方法调用了多次。以下代码 @Override public void onStatusChanged(int which) { AccountManager am = AccountManager.get(this); Account[] acc = am.ge

在我的应用程序中,我需要从谷歌日历中显示即将到来的活动。我已经做了。为了跟踪新事件(添加到Google日历web版本中的事件),我决定请求日历同步,如中所述

它工作得很好,但我注意到onStatusChanged(int)方法调用了多次。以下代码

@Override
public void onStatusChanged(int which) {
    AccountManager am = AccountManager.get(this);
    Account[] acc = am.getAccountsByType("com.google");
    Account account;
    if (acc.length > 0) {
        account = acc[0];
        boolean syncActive = ContentResolver.isSyncActive(
                account, CalendarContract.AUTHORITY);
        Log.d(TAG, "sync done = " + !syncActive);

        // is it right to update view here depending on syncActive value?

    }
}
给我这样的输出:

03-26 13:11:19.650  D/EventsActivity﹕ sync done = false
03-26 13:11:20.919  D/EventsActivity﹕ sync done = true
03-26 13:11:20.924  D/EventsActivity﹕ sync done = false
03-26 13:11:21.651  D/EventsActivity﹕ sync done = true
03-26 13:11:21.656  D/EventsActivity﹕ sync done = false
03-26 13:11:22.253  D/EventsActivity﹕ sync done = true
03-26 13:11:22.256  D/EventsActivity﹕ sync done = false
03-26 13:11:22.761  D/EventsActivity﹕ sync done = true
03-26 13:11:22.777  D/EventsActivity﹕ sync done = false
03-26 13:11:23.359  D/EventsActivity﹕ sync done = true
观察员的注册方式:

mContentProviderHandle = ContentResolver.addStatusChangeListener(
        ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE, this);

我想在第一段代码中添加注释的地方更新我的视图,但很明显,我的视图将被更新多次。我缺少什么?

如果侦听器中的代码正在更改状态,则应注销侦听器并重新注册它later@abdelrahman-elkady,我的onStatusChanged()与问题中的完全相同。或者你的意思是ContentResolver.Issyncative()改变了状态?似乎它没有改变状态。。我不知道,我真的以为那里有更多的代码!