gpt4 book ai didi

Android SyncAdapter 回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:28 27 4
gpt4 key购买 nike

我已经按照 SDK 中的 SimpleSyncAdapter 示例项目实现了 SyncAdapter、AccountManager 和私有(private) ContentProvider。一切正常。

现在,当从具有特定标志集的远程服务器下载新行时,我想向用户显示一条消息。当 Sync 完成时,我需要来自 SyncAdapter 的回调,以便我可以进行查询并显示来自 Activity 的消息。我在 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 发送通知时才会发生。因此,例如,如果您希望在上面的 ContentObserver 上收到有关通过 ContentProvider 在数据库上完成的所有更新的通知,您的 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 会非常有用。

关于Android SyncAdapter 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com