Android 多次调用SyncStatusObserver中的onStatusChanged()
在我的应用程序中,我需要从谷歌日历中显示即将到来的活动。我已经做了。为了跟踪新事件(添加到Google日历web版本中的事件),我决定请求日历同步,如中所述 它工作得很好,但我注意到onStatusChanged(int)方法调用了多次。以下代码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
@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()改变了状态?似乎它没有改变状态。。我不知道,我真的以为那里有更多的代码!