gpt4 book ai didi

android - 如何在 SyncAdapter 完成时通知调用 Activity?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:30 24 4
gpt4 key购买 nike

在我的 Android 项目中,我使用自定义 SyncAdapter 来下载数据并将其存储在本地 SQLite 数据库中。

public class CustomSyncAdapter extends AbstractThreadedSyncAdapter {

public CustomSyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
}

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

// 1) Download data via AsyncTask
// 2) Store data via ContentProvider
}
}

我使用 ContentResolver 从主 Activity 安排同步,例如 ...

ContentResolver.requestSync(account, Authentication.AUTHORITY, bundle);

是否有一种通用的方式在同步完成时通知调用 Activity

最佳答案

您可以使用 ContentResolver.notifyChange() 来做到这一点。

所以在您的 SyncAdapter 中,您会像这样:

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

// 1) Download data via AsyncTask
// 2) Store data via ContentProvider

getContext().getContentResolver().notifyChange(<your_content_uri>, null, false);
}
...

然后在 Activity 中使用 ContentResolver.registerContentObserver():

public class MyActivity extends Activity  {

private ContentObserver mObserver;

@Override
protected void onCreate(Bundle savedInstanceState) {
...
mObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
public void onChange(boolean selfChange) {
// Do something.
}
};
getContentResolver().registerContentObserver(<your_content_uri>, mObserver);
}

@Override
public void onDestroy() {
getContentResolver().unregisterContentObserver(mObserver);
}
}

关于android - 如何在 SyncAdapter 完成时通知调用 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559742/

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