Use intent type to target right process receiver

This commit is contained in:
M66B 2018-08-06 18:57:36 +00:00
parent 4342362c6f
commit beee8574fd
2 changed files with 16 additions and 6 deletions

View File

@ -94,11 +94,17 @@ public class EntityOperation {
operation.args = jsonArray.toString();
operation.id = dao.insertOperation(operation);
Intent intent = new Intent();
if (SEND.equals(name))
intent.setAction(ServiceSynchronize.ACTION_PROCESS_OUTBOX);
else {
intent.setType("account/" + message.account);
intent.setAction(ServiceSynchronize.ACTION_PROCESS_FOLDER);
}
intent.putExtra("folder", message.folder);
synchronized (queue) {
queue.add(new Intent(SEND.equals(name)
? ServiceSynchronize.ACTION_PROCESS_OUTBOX
: ServiceSynchronize.ACTION_PROCESS_FOLDER)
.putExtra("folder", message.folder));
queue.add(intent);
}
Log.i(Helper.TAG, "Queued op=" + operation.id + "/" + name +

View File

@ -392,12 +392,16 @@ public class ServiceSynchronize extends LifecycleService {
thread.start();
}
IntentFilter f = new IntentFilter(ACTION_PROCESS_FOLDER);
f.addDataType("account/" + account.id);
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(ServiceSynchronize.this);
lbm.registerReceiver(processReceiver, new IntentFilter(ACTION_PROCESS_FOLDER));
lbm.registerReceiver(processReceiver, f);
Log.i(Helper.TAG, "listen process folder");
for (final EntityFolder folder : db.folder().getFolders(account.id))
if (!EntityFolder.TYPE_OUTBOX.equals(folder.type))
lbm.sendBroadcast(new Intent(ACTION_PROCESS_FOLDER).putExtra("folder", folder.id));
lbm.sendBroadcast(new Intent(ACTION_PROCESS_FOLDER)
.setType("account/" + account.id)
.putExtra("folder", folder.id));
} catch (Throwable ex) {
Log.e(Helper.TAG, account.name + " " + ex + "\n" + Log.getStackTraceString(ex));