잘 실행되는 SyncAdapter
인 응용 프로그램이 있습니다. SyncService
은 시간당 한 번 실행됩니다.SyncAdapter에서 Activity로 sendBroadcast를 보낼 수 없습니다.
내 응용 프로그램의 주소는 DeviceControlActivity
이며 syncResult
과 같은 SyncAdaptor에서 메시지를 수신하고 싶습니다.
나는 그것을 시작하고 실행하기 위해 많은 노력을했지만 DeviceControlActivity
에서 어떤 메시지도받을 수 없다. SyncAdapter
. 내 DeviceControlActivity
에서
내가 할 :
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
에서 메시지를 보낼 수 있으며 작동합니다
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);
}
을 SyncAdapter, 나는있다.
나는 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?