2017-09-14 5 views
1

別の:syncプロセスで実行されているSyncAdapterの同期ステータス(アプリケーションが開始されたプロセスから)を確認することはできますか?私は以下の標準ContentResolverメソッドを使っていましたが、以下のコードが私のSyncAdapter:syncプロセス)と同じプロセスで実行されない限り、trueを返すことはできません。 Sync Frameworkのドキュメントのメインプロセスからの同期プロセスで、アクティブ/保留中の同期を表示できますか?

val currentSyncs = ContentResolver.getCurrentSyncs().any { it.authority == <authority> } 
val syncPending = ContentResolver.isSyncPending(account, <authority>) 
val syncActive = ContentResolver.isSyncActive(account, <authority>) 

なし、これはクロスプロセスのシナリオでは不可能であることを示していると思われるので、私は少し困惑したが、それは、このための最も可能性の高い説明のように思えます。

答えて

0

同期ステータス情報を取得する信頼性の高い方法を見つけようとすると、私はむしろ不運でしたContentResolver。インテントを受け取るその後、

// 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); 

と:別のコンポーネントへのごSyncAdapterからの情報を放送するために使用インテントを:

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)); 
+0

うん、我々はまた、この方法を使用し、それが動作する私のために働いた何

すばらしいです。しかし、私は 'Activity'が起動時に同期の現在の状態を確認できるようにしようとしているので、' Activity'は同期が完了する前に 'BroadcastReceiver'を登録する機会を必ずしも持っていません。このシナリオでは、イベント駆動型ではなくオンデマンド型のアプローチが必要です。つまり、同期ステータスを追跡し、開始時にアクティビティで利用できる受信機を構築することができます。 – mtrewartha

関連する問題