В моем проекте Android я использую пользовательский SyncAdapter
, который загружает данные и хранит их в локальной базе данных SQLite.Как уведомить вызывающую деятельность, когда завершен SyncAdapter?
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
}
}
запланировать sychronization от главного Activity
с использованием ContentResolver
, таких как ...
ContentResolver.requestSync(account, Authentication.AUTHORITY, bundle);
Есть ли общий способ вызывающий Activity
уведомляется, когда синхронизация завершена?
[ContentObserver] (http://developer.android.com/reference/android/database/ContentObserver.html) требует пройти ах Andler. 'notifyChange' - это то же сообщение, которое уже отправлено' ContentProvider', я думаю ?! Или что вы используете? – JJD
Я добавил «обработчик» к моему ответу. Да, если ваш 'ContentProvider' вызывает' notifyChange', вам не нужно называть его вручную. – Blaz
Я думаю, что я должен уйти из 'Looper.getMainLooper', так как я уже запускаюсь в потоке пользовательского интерфейса. В противном случае я попадаю в 'java.util.concurrent.RejectedExecutionException'. - Я думаю, вы комментируете: «Ничего не делайте». должно быть что-то вроде «Обновить интерфейс». – JJD