Fix activity fetching getting stuck when double tapping #333

This commit is contained in:
cpfeiffer 2016-06-28 23:07:24 +02:00
parent 76dcb8f828
commit f0da25c49b
3 changed files with 7 additions and 3 deletions

View File

@ -102,8 +102,8 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
swipeLayout.setRefreshing(true); swipeLayout.setRefreshing(true);
} else { } else {
boolean wasBusy = swipeLayout.isRefreshing(); boolean wasBusy = swipeLayout.isRefreshing();
if (wasBusy) {
swipeLayout.setRefreshing(false); swipeLayout.setRefreshing(false);
if (wasBusy) {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(REFRESH)); LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(REFRESH));
} }
} }

View File

@ -105,9 +105,11 @@ public abstract class AbstractBTLEOperation<T extends AbstractBTLEDeviceSupport>
} }
protected void unsetBusy() { protected void unsetBusy() {
if (getDevice().isBusy()) {
getDevice().unsetBusyTask(); getDevice().unsetBusyTask();
getDevice().sendDeviceUpdateIntent(getContext()); getDevice().sendDeviceUpdateIntent(getContext());
} }
}
public boolean isOperationRunning() { public boolean isOperationRunning() {
return operationStatus == OperationStatus.RUNNING; return operationStatus == OperationStatus.RUNNING;

View File

@ -18,6 +18,7 @@ public abstract class AbstractMiBandOperation extends AbstractBTLEOperation<MiBa
@Override @Override
protected void prePerform() throws IOException { protected void prePerform() throws IOException {
super.prePerform(); super.prePerform();
getDevice().setBusyTask("fetch activity data"); // mark as busy quickly to avoid interruptions from the outside
TransactionBuilder builder = performInitialized("disabling some notifications"); TransactionBuilder builder = performInitialized("disabling some notifications");
enableOtherNotifications(builder, false); enableOtherNotifications(builder, false);
builder.queue(getQueue()); builder.queue(getQueue());
@ -27,6 +28,7 @@ public abstract class AbstractMiBandOperation extends AbstractBTLEOperation<MiBa
protected void operationFinished() { protected void operationFinished() {
operationStatus = OperationStatus.FINISHED; operationStatus = OperationStatus.FINISHED;
if (getDevice() != null && getDevice().isConnected()) { if (getDevice() != null && getDevice().isConnected()) {
unsetBusy();
try { try {
TransactionBuilder builder = performInitialized("reenabling disabled notifications"); TransactionBuilder builder = performInitialized("reenabling disabled notifications");
enableOtherNotifications(builder, true); enableOtherNotifications(builder, true);