SyncAdapter
のアプリケーションが正常に動作しています。 SyncService
は1時間に1回実行されます。SyncAdapterからアクティビティにsendBroadcastを送信できません
私のアプリケーションには、FragmentActivity
というDeviceControlActivity
と呼ばれるメインがあり、syncResult
などのSyncAdaptorからメッセージを受け取りたいと考えています。
私はそれを稼働させるために多くの試みをしましたが、DeviceControlActivity
のメッセージはいずれもSyncAdapter
から届きません。私は私のDeviceControlActivity
で
:SyncAdapterオン
private BroadcastReceiver mSyncMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Got it!");
}
};
@Override
protected void onResume() {
super.onResume();
// Receive feedback from syncManager
LocalBroadcastManager.getInstance(getApplication()).registerReceiver(mSyncMessageReceiver,
new IntentFilter(Constants.MESSAGE_SYNC));
}
@Override
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mSyncMessageReceiver);
}
を、私が持っている:
private LocalBroadcastManager mBroadcastManager;
public SyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
mBroadcastManager = LocalBroadcastManager.getInstance(context);
}
@Override
public void onPerformSync(
Account account,
Bundle extras,
String authority,
ContentProviderClient provider,
SyncResult syncResult) {
Intent intent = new Intent(Constants.MESSAGE_SYNC);
mBroadcastManager.sendBroadcast(intent);
私はDeviceControlActivity
から自分自身にメッセージを送信することができ、それが動作します。
私はSyncServiceからメッセージを受信しますが、別の方法を使用してすることができます:予想通り
final int mask = ContentResolver.SYNC_OBSERVER_TYPE_PENDING | ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE;
mSyncMonitor = ContentResolver.addStatusChangeListener(mask, this);
このリスナーは同期の活動を報告します。
しかし、LocalBroadcastManagerを使用して、サービスとアクティビティの間で通信したいと思いますが、できません。
私はすでにLocalBroadcastManager文書によると、このクラスはに登録して、あなたのプロセス内ローカルオブジェクトにインテントのブロードキャストを送信するためにヘルパーですHow to use LocalBroadcastManager?