gpt4 book ai didi

android - ContentResolver.requestSync <= 发送附加信息到 => SyncAdapter.onPerformSync

转载 作者:行者123 更新时间:2023-11-29 21:38:12 24 4
gpt4 key购买 nike

我使用 SyncAdapter 将我的数据与服务器同步。一切正常,但我很难向 SyncAdapter 发送额外内容。

在我的 ContentObserver 中,我使用以下代码向 SyncAdapter 发送请求:

    @Override
public void onChange(boolean selfChange, Uri changeUri) {

Bundle extras = new Bundle();
extras.putParcelable(Globals.EXTRA_URI, changeUri);
extras.putInt("no", 123456);
extras.putBoolean(
ContentResolver.SYNC_EXTRAS_MANUAL, true);
extras.putBoolean(
ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
ContentResolver.requestSync(account, MyProvider.AUTHORITY, extras);

}

但是,在 SyncAdapter 端,我没有得到这些额外的东西:

@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {

Uri changeUri = extras.getParcelable(Globals.EXTRA_URI);
int aaa = extras.getInt("no");

Log.i(TAG, "Syncadapter / uri: "+changeUri+"/"+aaa+"/"+extras.size());

//Logcat: Syncadapter / uri: null/0/1

...
}

我想用extras找出哪条数据需要同步。此外,系统会忽略 ContentResolver 特定的附加功能:例如ContentResolver.SYNC_EXTRAS_MANUAL(不立即执行同步)


编辑:我刚刚注意到,只有在被 ContentObserver.onChange() 调用时,它才会丢失那些额外的参数。当我在 Activity 中调用 requestSync() 时,一切都按预期进行。

最佳答案

我不知道背后的真正原因,但我设法让它工作了。

问题是我试图将 URI 作为可打包的额外内容发送。当我通过 ContentObserver 发送它时,它只是默默地未能将它发送到 SyncAdapter。但是当我尝试从我的 Activity 进行相同的调用时,它导致了一些异常(真的不记得它是什么)。

解决方案是去掉这个额外的部分并发送一些常量整数。

关于android - ContentResolver.requestSync <= 发送附加信息到 => SyncAdapter.onPerformSync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17813777/

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