是否可以确定(在应用程序启动的过程中)同步状态为SyncAdapter
在单独的:sync
进程中运行?我一直在使用下面的标准ContentResolver
方法,除非下面的代码在与true
(SyncAdapter
相同的过程中执行,否则无法让任何方法返回:sync
1}}过程)。
val currentSyncs = ContentResolver.getCurrentSyncs().any { it.authority == <authority> }
val syncPending = ContentResolver.isSyncPending(account, <authority>)
val syncActive = ContentResolver.isSyncActive(account, <authority>)
这些同步框架文档似乎都没有表明在跨进程场景中这是不可能的,所以我有点难过,但它似乎是最可能的解释。
答案 0 :(得分:0)
我试图找到一种从ContentResolver
获取同步状态信息的可靠方法,实在是太不走运了。
对我有用:使用意图将信息从SyncAdapter
广播到另一个组件:
// when sync started
Intent i = new Intent();
i.setAction(MyIntents.INTENT_ACTION_SYNC_STARTED);
context.sendBroadcast(i);
// when sync completed
Intent i = new Intent();
i.setAction(MyIntents.INTENT_ACTION_SYNC_DONE);
context.sendBroadcast(i);
然后收到意图:
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, 'Sync started', Toast.LENGTH_LONG).show();
}
}, new IntentFilter(MyIntents.INTENT_ACTION_SYNC_STARTED));