Create fragments off main thread

pull/795/head
Alex Baker 6 years ago
parent 3c28a4b2ec
commit ea2e4ebc12

@ -39,7 +39,10 @@ import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment; import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.timers.TimerControlSet; import com.todoroo.astrid.timers.TimerControlSet;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.LocalBroadcastManager; import org.tasks.LocalBroadcastManager;
import org.tasks.R; import org.tasks.R;
@ -116,7 +119,7 @@ public class MainActivity extends InjectingAppCompatActivity
@BindView(R.id.detail) @BindView(R.id.detail)
FrameLayout detail; FrameLayout detail;
private CompositeDisposable disposables = new CompositeDisposable(); private CompositeDisposable disposables;
private NavigationDrawerFragment navigationDrawer; private NavigationDrawerFragment navigationDrawer;
private int currentNightMode; private int currentNightMode;
@ -152,8 +155,6 @@ public class MainActivity extends InjectingAppCompatActivity
finishActionMode(); finishActionMode();
} }
}); });
handleIntent();
} }
@Override @Override
@ -161,8 +162,6 @@ public class MainActivity extends InjectingAppCompatActivity
super.onNewIntent(intent); super.onNewIntent(intent);
setIntent(intent); setIntent(intent);
handleIntent();
} }
@Override @Override
@ -253,22 +252,26 @@ public class MainActivity extends InjectingAppCompatActivity
} }
private void loadTaskListFragment(Filter filter) { private void loadTaskListFragment(Filter filter) {
if (filter == null) {
filter = defaultFilterProvider.getDefaultFilter();
}
TaskListFragment taskListFragment = newTaskListFragment(filter);
finishActionMode(); finishActionMode();
applyTheme(taskListFragment); navigationDrawer.closeDrawer();
navigationDrawer.setSelected(filter);
FragmentManager fragmentManager = getSupportFragmentManager(); disposables.add(
fragmentManager Single.fromCallable(() -> newTaskListFragment(filter))
.beginTransaction() .subscribeOn(Schedulers.io())
.replace(R.id.master, taskListFragment, FRAG_TAG_TASK_LIST) .observeOn(AndroidSchedulers.mainThread())
.commit(); .subscribe(
taskListFragment -> {
if (taskListFragment != null) {
navigationDrawer.setSelected(taskListFragment.filter);
applyTheme(taskListFragment);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager
.beginTransaction()
.replace(R.id.master, taskListFragment, FRAG_TAG_TASK_LIST)
.commit();
}
}));
} }
private void applyTheme(TaskListFragment taskListFragment) { private void applyTheme(TaskListFragment taskListFragment) {
@ -317,6 +320,10 @@ public class MainActivity extends InjectingAppCompatActivity
return; return;
} }
disposables = new CompositeDisposable();
handleIntent();
localBroadcastManager.registerRepeatReceiver(repeatConfirmationReceiver); localBroadcastManager.registerRepeatReceiver(repeatConfirmationReceiver);
disposables.add(syncAdapters.checkPlayServices(this)); disposables.add(syncAdapters.checkPlayServices(this));
@ -366,7 +373,10 @@ public class MainActivity extends InjectingAppCompatActivity
} }
private TaskListFragment newTaskListFragment(Filter filter) { private TaskListFragment newTaskListFragment(Filter filter) {
navigationDrawer.closeDrawer(); if (filter == null) {
filter = defaultFilterProvider.getDefaultFilter();
}
if (filter instanceof TagFilter) { if (filter instanceof TagFilter) {
TagFilter tagFilter = (TagFilter) filter; TagFilter tagFilter = (TagFilter) filter;
TagData tagData = tagDataDao.getByUuid(tagFilter.getUuid()); TagData tagData = tagDataDao.getByUuid(tagFilter.getUuid());

Loading…
Cancel
Save