微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android SyncAdapter回调

我已经在SDK中的SimpleSyncAdapter示例项目中实现了SyncAdapter,AccountManager和私有ContentProvider.一切运作良好.

现在,我想在从具有特定标志集的远程服务器下载新行时向用户显示一条消息.当Sync完成时,我需要从SyncAdapter进行回调,以便我可以执行查询显示来自活动的消息.我在StackOverflow上看到了一些关于这个问题的问题,但没有一个问题得到了很好的答案.

How does one listen for progress from Android SyncAdapter?说SyncStatusObserver没用.用户mobibob建议使用ResultReceiver从同步线程回复UI.

How to know when sync is finished?建议在SyncService中使用Intent.

How to signal sync-complete to the Android SyncManager?建议使用SyncResult.由maxpower47链接的示例代码使用SyncResult类报告异常,但不实际报告同步是否成功完成.

我只是不知道哪个是最好的选择,我还没有看到任何使用这些解决方案的示例项目.

解决方法

我知道这是一个老问题,但我自己也在问同样的事情.
我发现作为一个好的解决方案,特别是因为我正在处理本地数据,是使用ContentResolver中的以下方法
registerContentObserver(Uri uri,boolean notifyForDescendents,ContentObserver observer)

这会注册一个观察者类,当给定内容URI标识的数据发生更改时,该类会获得回调.但这只有在您的ContentProvider发送通知时才会发生.因此,例如,如果您希望通过ContentProvider在ContentObserver上获得有关数据库上所做的所有更新的通知,那么您的ContentProvider应该实现类似于以下的更新:

@Override
public int update(Uri uri,ContentValues contentValues,String s,String[] strings) {
    // code goes here
    this.getContext().getContentResolver().notifyChange(uri,null);
    return 0;
}

在执行registerContentObserver时使用notifyForDescendents非常有用.

原文地址:https://www.jb51.cc/android/317630.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐