Fixed the controllers and am now saving the current fragment

This commit is contained in:
Ernir Erlingsson
2016-05-11 23:50:11 +02:00
parent 8ceaabddf4
commit 698ca41720
11 changed files with 103 additions and 41 deletions

View File

@@ -4,8 +4,6 @@ import org.briarproject.android.controller.handler.ResultHandler;
public interface BriarController extends ActivityLifecycleController {
void runOnDbThread(final Runnable task);
void startAndBindService();
boolean hasEncryptionKey();

View File

@@ -9,10 +9,7 @@ import org.briarproject.android.BriarService;
import org.briarproject.android.BriarService.BriarServiceConnection;
import org.briarproject.android.controller.handler.ResultHandler;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.lifecycle.LifecycleManager;
import java.util.concurrent.Executor;
import java.util.logging.Logger;
import javax.inject.Inject;
@@ -29,13 +26,6 @@ public class BriarControllerImpl implements BriarController {
@Inject
protected Activity activity;
// Fields that are accessed from background threads must be volatile
@Inject
@DatabaseExecutor
protected volatile Executor dbExecutor;
@Inject
protected volatile LifecycleManager lifecycleManager;
private boolean bound = false;
@Inject
@@ -70,6 +60,7 @@ public class BriarControllerImpl implements BriarController {
activity.startService(new Intent(activity, BriarService.class));
bound = activity.bindService(new Intent(activity, BriarService.class),
serviceConnection, 0);
LOG.info("Briar service started " + bound);
}
@Override
@@ -100,23 +91,9 @@ public class BriarControllerImpl implements BriarController {
}.start();
}
private void unbindService() {
protected void unbindService() {
LOG.info("Briar service unbind " + bound);
if (bound) activity.unbindService(serviceConnection);
}
@Override
public void runOnDbThread(final Runnable task) {
dbExecutor.execute(new Runnable() {
@Override
public void run() {
try {
lifecycleManager.waitForDatabase();
task.run();
} catch (InterruptedException e) {
LOG.warning("Interrupted while waiting for database");
Thread.currentThread().interrupt();
}
}
});
}
}

View File

@@ -0,0 +1,7 @@
package org.briarproject.android.controller;
public interface DBController {
void runOnDbThread(Runnable task);
}

View File

@@ -0,0 +1,43 @@
package org.briarproject.android.controller;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.lifecycle.LifecycleManager;
import java.util.concurrent.Executor;
import java.util.logging.Logger;
import javax.inject.Inject;
public class DBControllerImpl implements DBController {
private static final Logger LOG =
Logger.getLogger(BriarControllerImpl.class.getName());
// Fields that are accessed from background threads must be volatile
@Inject
@DatabaseExecutor
protected volatile Executor dbExecutor;
@Inject
protected volatile LifecycleManager lifecycleManager;
@Inject
public DBControllerImpl() {
}
@Override
public void runOnDbThread(final Runnable task) {
dbExecutor.execute(new Runnable() {
@Override
public void run() {
try {
lifecycleManager.waitForDatabase();
task.run();
} catch (InterruptedException e) {
LOG.warning("Interrupted while waiting for database");
Thread.currentThread().interrupt();
}
}
});
}
}

View File

@@ -4,7 +4,7 @@ import org.briarproject.android.controller.handler.UiResultHandler;
import org.briarproject.api.TransportId;
import org.briarproject.api.identity.LocalAuthor;
public interface NavDrawerController extends BriarController {
public interface NavDrawerController extends ActivityLifecycleController {
void setTransportListener(TransportStateListener transportListener);

View File

@@ -23,7 +23,7 @@ import javax.inject.Inject;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
public class NavDrawerControllerImpl extends BriarControllerImpl
public class NavDrawerControllerImpl extends DBControllerImpl
implements NavDrawerController, EventListener {
private static final Logger LOG =
@@ -51,21 +51,24 @@ public class NavDrawerControllerImpl extends BriarControllerImpl
@Override
public void onActivityCreate() {
super.onActivityCreate();
}
@Override
public void onActivityResume() {
super.onActivityResume();
eventBus.addListener(this);
}
@Override
public void onActivityPause() {
super.onActivityPause();
eventBus.removeListener(this);
}
@Override
public void onActivityDestroy() {
}
@Override
public void eventOccurred(Event e) {
if (e instanceof TransportEnabledEvent) {
@@ -131,4 +134,5 @@ public class NavDrawerControllerImpl extends BriarControllerImpl
public LocalAuthor removeAuthorHandle(long handle) {
return referenceManager.removeReference(handle, LocalAuthor.class);
}
}