Always check whether context has been destroyed.

This commit is contained in:
akwizgran
2016-09-29 14:52:00 +01:00
parent f1730aa7d9
commit cb983f02c2
49 changed files with 310 additions and 340 deletions

View File

@@ -46,10 +46,8 @@ import static org.briarproject.api.sharing.SharingConstants.GROUP_ID;
public class ContactSelectorFragment extends BaseFragment implements
BaseContactListAdapter.OnItemClickListener {
public final static String TAG = "ContactSelectorFragment";
private static final Logger LOG =
Logger.getLogger(ContactSelectorFragment.class.getName());
public static final String TAG = ContactSelectorFragment.class.getName();
private static final Logger LOG = Logger.getLogger(TAG);
private ShareActivity shareActivity;
private Menu menu;
@@ -84,12 +82,7 @@ public class ContactSelectorFragment extends BaseFragment implements
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
shareActivity = (ShareActivity) context;
} catch (ClassCastException e) {
throw new InstantiationError(
"This fragment is only meant to be attached to a subclass of ShareActivity");
}
shareActivity = (ShareActivity) context;
}
@Override
@@ -221,7 +214,7 @@ public class ContactSelectorFragment extends BaseFragment implements
}
private void displayContacts(final List<ContactListItem> contacts) {
shareActivity.runOnUiThread(new Runnable() {
shareActivity.runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (!contacts.isEmpty()) adapter.addAll(contacts);

View File

@@ -32,7 +32,7 @@ abstract class InvitationsActivity extends BriarActivity
private BriarRecyclerView list;
@Inject
protected EventBus eventBus;
EventBus eventBus;
@Override
public void onCreate(Bundle state) {
@@ -103,7 +103,7 @@ abstract class InvitationsActivity extends BriarActivity
protected void displayInvitations(
final Collection<InvitationItem> invitations, final boolean clear) {
runOnUiThread(new Runnable() {
runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (invitations.isEmpty()) {

View File

@@ -14,6 +14,7 @@ import org.briarproject.api.db.DbException;
import org.briarproject.api.sync.GroupId;
import java.util.Collection;
import java.util.logging.Logger;
import javax.inject.Inject;
@@ -23,6 +24,7 @@ import static java.util.logging.Level.WARNING;
public class ShareBlogMessageFragment extends ShareMessageFragment {
public final static String TAG = ShareBlogMessageFragment.class.getName();
private static final Logger LOG = Logger.getLogger(TAG);
// Fields that are accessed from background threads must be volatile
@Inject
@@ -52,6 +54,12 @@ public class ShareBlogMessageFragment extends ShareMessageFragment {
component.inject(this);
}
@Override
public String getUniqueTag() {
return TAG;
}
@Override
protected void share(final String msg) {
listener.runOnDbThread(new Runnable() {
@Override
@@ -69,8 +77,9 @@ public class ShareBlogMessageFragment extends ShareMessageFragment {
});
}
@Override
protected void sharingError() {
runOnUiThread(new Runnable() {
listener.runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
int res = R.string.blogs_sharing_error;

View File

@@ -14,6 +14,7 @@ import org.briarproject.api.forum.ForumSharingManager;
import org.briarproject.api.sync.GroupId;
import java.util.Collection;
import java.util.logging.Logger;
import javax.inject.Inject;
@@ -23,6 +24,7 @@ import static java.util.logging.Level.WARNING;
public class ShareForumMessageFragment extends ShareMessageFragment {
public final static String TAG = ShareForumMessageFragment.class.getName();
private static final Logger LOG = Logger.getLogger(TAG);
// Fields that are accessed from background threads must be volatile
@Inject
@@ -49,6 +51,12 @@ public class ShareForumMessageFragment extends ShareMessageFragment {
component.inject(this);
}
@Override
public String getUniqueTag() {
return TAG;
}
@Override
protected void share(final String msg) {
listener.runOnDbThread(new Runnable() {
@Override
@@ -67,8 +75,9 @@ public class ShareForumMessageFragment extends ShareMessageFragment {
});
}
@Override
protected void sharingError() {
runOnUiThread(new Runnable() {
listener.runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
int res = R.string.forum_share_error;

View File

@@ -18,7 +18,6 @@ import org.briarproject.api.sync.GroupId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Logger;
import javax.inject.Inject;
@@ -29,10 +28,6 @@ import static org.briarproject.api.sharing.SharingConstants.GROUP_ID;
abstract class ShareMessageFragment extends BaseFragment
implements TextInputListener {
public final static String TAG = ShareMessageFragment.class.getName();
protected static final Logger LOG = Logger.getLogger(TAG);
protected ViewHolder ui;
private ShareActivity shareActivity;
@@ -56,12 +51,7 @@ abstract class ShareMessageFragment extends BaseFragment
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
shareActivity = (ShareActivity) context;
} catch (ClassCastException e) {
throw new InstantiationError(
"This fragment is only meant to be attached to the ShareForumActivity");
}
shareActivity = (ShareActivity) context;
}
@Override
@@ -104,11 +94,6 @@ abstract class ShareMessageFragment extends BaseFragment
}
}
@Override
public String getUniqueTag() {
return TAG;
}
protected void setTitle(int res) {
shareActivity.setTitle(res);
}
@@ -136,10 +121,6 @@ abstract class ShareMessageFragment extends BaseFragment
return groupId;
}
protected void runOnUiThread(Runnable runnable) {
listener.runOnUiThread(runnable);
}
protected static class ViewHolder {
protected final LargeTextInputView message;

View File

@@ -27,16 +27,16 @@ import static java.util.logging.Level.WARNING;
abstract class SharingStatusActivity extends BriarActivity {
private static final Logger LOG =
Logger.getLogger(SharingStatusActivity.class.getName());
private GroupId groupId;
private BriarRecyclerView sharedByList, sharedWithList;
private SharingStatusAdapter sharedByAdapter, sharedWithAdapter;
// Fields that are accessed from background threads must be volatile
@Inject
protected volatile IdentityManager identityManager;
public final static String TAG = SharingStatusActivity.class.getName();
private static final Logger LOG = Logger.getLogger(TAG);
volatile IdentityManager identityManager;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -120,7 +120,7 @@ abstract class SharingStatusActivity extends BriarActivity {
}
private void displaySharedBy(final List<ContactListItem> contacts) {
runOnUiThread(new Runnable() {
runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (contacts.isEmpty()) {
@@ -156,7 +156,7 @@ abstract class SharingStatusActivity extends BriarActivity {
}
private void displaySharedWith(final List<ContactListItem> contacts) {
runOnUiThread(new Runnable() {
runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
if (contacts.isEmpty()) {