Use start/stop lifecycle callbacks rather than pause/resume.

Also fixed a couple of bugs.
This commit is contained in:
akwizgran
2016-10-12 16:55:00 +01:00
parent b3e5d1ff85
commit 50a70f7649
51 changed files with 563 additions and 538 deletions

View File

@@ -30,7 +30,6 @@ import org.briarproject.api.sync.GroupId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
@@ -57,11 +56,11 @@ public class ContactSelectorFragment extends BaseFragment implements
// Fields that are accessed from background threads must be volatile
@Inject
protected volatile ContactManager contactManager;
volatile ContactManager contactManager;
@Inject
protected volatile IdentityManager identityManager;
volatile IdentityManager identityManager;
@Inject
protected volatile ForumSharingManager forumSharingManager;
volatile ForumSharingManager forumSharingManager;
private volatile GroupId groupId;
@@ -91,8 +90,9 @@ public class ContactSelectorFragment extends BaseFragment implements
setHasOptionsMenu(true);
Bundle args = getArguments();
groupId = new GroupId(args.getByteArray(GROUP_ID));
if (groupId == null) throw new IllegalStateException("No GroupId");
byte[] b = args.getByteArray(GROUP_ID);
if (b == null) throw new IllegalStateException("No GroupId");
groupId = new GroupId(b);
}
@Override
@@ -125,12 +125,16 @@ public class ContactSelectorFragment extends BaseFragment implements
}
@Override
public void onResume() {
super.onResume();
public void onStart() {
super.onStart();
loadContacts(selectedContacts);
}
if (selectedContacts != null)
loadContacts(Collections.unmodifiableCollection(selectedContacts));
else loadContacts(null);
@Override
public void onStop() {
super.onStop();
adapter.clear();
list.showProgressBar();
}
@Override
@@ -202,9 +206,8 @@ public class ContactSelectorFragment extends BaseFragment implements
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Load took " + duration + " ms");
displayContacts(Collections.unmodifiableList(contacts));
displayContacts(contacts);
} catch (DbException e) {
displayContacts(Collections.<ContactListItem>emptyList());
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
@@ -216,8 +219,8 @@ public class ContactSelectorFragment extends BaseFragment implements
shareActivity.runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (!contacts.isEmpty()) adapter.addAll(contacts);
else list.showData();
if (contacts.isEmpty()) list.showData();
else adapter.addAll(contacts);
updateMenuItem();
}
});

View File

@@ -2,6 +2,7 @@ package org.briarproject.android.sharing;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.CallSuper;
import android.support.v7.widget.LinearLayoutManager;
import android.widget.Toast;
@@ -42,7 +43,6 @@ abstract class InvitationsActivity extends BriarActivity
adapter = getAdapter(this, this);
list = (BriarRecyclerView) findViewById(R.id.list);
if (list != null) {
list.setLayoutManager(new LinearLayoutManager(this));
@@ -51,21 +51,22 @@ abstract class InvitationsActivity extends BriarActivity
}
@Override
public void onResume() {
super.onResume();
public void onStart() {
super.onStart();
eventBus.addListener(this);
loadInvitations(false);
}
@Override
public void onPause() {
super.onPause();
public void onStop() {
super.onStop();
eventBus.removeListener(this);
adapter.clear();
list.showProgressBar();
}
@Override
@CallSuper
public void eventOccurred(Event e) {
if (e instanceof ContactRemovedEvent) {
LOG.info("Contact removed, reloading...");
@@ -110,8 +111,8 @@ abstract class InvitationsActivity extends BriarActivity
LOG.info("No more invitations available, finishing");
finish();
} else {
if (clear) adapter.clear();
adapter.addAll(invitations);
if (clear) adapter.setItems(invitations);
else adapter.addAll(invitations);
}
}
});

View File

@@ -29,9 +29,9 @@ public class InvitationsBlogActivity extends InvitationsActivity {
// Fields that are accessed from background threads must be volatile
@Inject
protected volatile BlogManager blogManager;
volatile BlogManager blogManager;
@Inject
protected volatile BlogSharingManager blogSharingManager;
volatile BlogSharingManager blogSharingManager;
@Override
public void injectActivity(ActivityComponent component) {
@@ -62,31 +62,34 @@ public class InvitationsBlogActivity extends InvitationsActivity {
}
}
@Override
protected InvitationAdapter getAdapter(Context ctx,
AvailableForumClickListener listener) {
return new BlogInvitationAdapter(ctx, listener);
}
@Override
protected void loadInvitations(final boolean clear) {
runOnDbThread(new Runnable() {
@Override
public void run() {
Collection<InvitationItem> invitations = new ArrayList<>();
try {
Collection<InvitationItem> invitations = new ArrayList<>();
long now = System.currentTimeMillis();
invitations.addAll(blogSharingManager.getInvitations());
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Load took " + duration + " ms");
displayInvitations(invitations, clear);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
displayInvitations(invitations, clear);
}
});
}
@Override
protected void respondToInvitation(final InvitationItem item,
final boolean accept) {
runOnDbThread(new Runnable() {
@@ -95,6 +98,7 @@ public class InvitationsBlogActivity extends InvitationsActivity {
try {
Blog b = (Blog) item.getShareable();
for (Contact c : item.getNewSharers()) {
// TODO: What happens if a contact has been removed?
blogSharingManager.respondToInvitation(b, c, accept);
}
} catch (DbException e) {
@@ -105,10 +109,12 @@ public class InvitationsBlogActivity extends InvitationsActivity {
});
}
@Override
protected int getAcceptRes() {
return R.string.blogs_sharing_joined_toast;
}
@Override
protected int getDeclineRes() {
return R.string.blogs_sharing_declined_toast;
}

View File

@@ -29,9 +29,9 @@ public class InvitationsForumActivity extends InvitationsActivity {
// Fields that are accessed from background threads must be volatile
@Inject
protected volatile ForumManager forumManager;
volatile ForumManager forumManager;
@Inject
protected volatile ForumSharingManager forumSharingManager;
volatile ForumSharingManager forumSharingManager;
@Override
public void injectActivity(ActivityComponent component) {
@@ -62,31 +62,34 @@ public class InvitationsForumActivity extends InvitationsActivity {
}
}
@Override
protected InvitationAdapter getAdapter(Context ctx,
AvailableForumClickListener listener) {
return new ForumInvitationAdapter(ctx, listener);
}
@Override
protected void loadInvitations(final boolean clear) {
runOnDbThread(new Runnable() {
@Override
public void run() {
Collection<InvitationItem> invitations = new ArrayList<>();
try {
Collection<InvitationItem> invitations = new ArrayList<>();
long now = System.currentTimeMillis();
invitations.addAll(forumSharingManager.getInvitations());
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Load took " + duration + " ms");
displayInvitations(invitations, clear);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
displayInvitations(invitations, clear);
}
});
}
@Override
protected void respondToInvitation(final InvitationItem item,
final boolean accept) {
runOnDbThread(new Runnable() {
@@ -95,6 +98,7 @@ public class InvitationsForumActivity extends InvitationsActivity {
try {
Forum f = (Forum) item.getShareable();
for (Contact c : item.getNewSharers()) {
// TODO: What happens if a contact has been removed?
forumSharingManager.respondToInvitation(f, c, accept);
}
} catch (DbException e) {
@@ -105,10 +109,12 @@ public class InvitationsForumActivity extends InvitationsActivity {
});
}
@Override
protected int getAcceptRes() {
return R.string.forum_joined_toast;
}
@Override
protected int getDeclineRes() {
return R.string.forum_declined_toast;
}

View File

@@ -63,13 +63,21 @@ abstract class SharingStatusActivity extends BriarActivity {
}
@Override
public void onResume() {
super.onResume();
public void onStart() {
super.onStart();
loadSharedBy();
loadSharedWith();
}
@Override
public void onStop() {
super.onStop();
sharedByAdapter.clear();
sharedByList.showProgressBar();
sharedWithAdapter.clear();
sharedWithList.showProgressBar();
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
// Handle presses on the action bar items
@@ -97,11 +105,11 @@ abstract class SharingStatusActivity extends BriarActivity {
}
private void loadSharedBy() {
dbController.runOnDbThread(new Runnable() {
runOnDbThread(new Runnable() {
@Override
public void run() {
List<ContactListItem> contactItems = new ArrayList<>();
try {
List<ContactListItem> contactItems = new ArrayList<>();
for (Contact c : getSharedBy()) {
LocalAuthor localAuthor = identityManager
.getLocalAuthor(c.getLocalAuthorId());
@@ -110,11 +118,11 @@ abstract class SharingStatusActivity extends BriarActivity {
groupId, new GroupCount(0, 0, 0));
contactItems.add(item);
}
displaySharedBy(contactItems);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
displaySharedBy(contactItems);
}
});
}
@@ -123,21 +131,18 @@ abstract class SharingStatusActivity extends BriarActivity {
runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (contacts.isEmpty()) {
sharedByList.showData();
} else {
sharedByAdapter.addAll(contacts);
}
if (contacts.isEmpty()) sharedByList.showData();
else sharedByAdapter.addAll(contacts);
}
});
}
private void loadSharedWith() {
dbController.runOnDbThread(new Runnable() {
runOnDbThread(new Runnable() {
@Override
public void run() {
List<ContactListItem> contactItems = new ArrayList<>();
try {
List<ContactListItem> contactItems = new ArrayList<>();
for (Contact c : getSharedWith()) {
LocalAuthor localAuthor = identityManager
.getLocalAuthor(c.getLocalAuthorId());
@@ -146,11 +151,11 @@ abstract class SharingStatusActivity extends BriarActivity {
groupId, new GroupCount(0, 0, 0));
contactItems.add(item);
}
displaySharedWith(contactItems);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
displaySharedWith(contactItems);
}
});
}
@@ -159,11 +164,8 @@ abstract class SharingStatusActivity extends BriarActivity {
runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (contacts.isEmpty()) {
sharedWithList.showData();
} else {
sharedWithAdapter.addAll(contacts);
}
if (contacts.isEmpty()) sharedWithList.showData();
else sharedWithAdapter.addAll(contacts);
}
});
}