From 31b826f93b200120a69d8d8b58527623f8e0b297 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 14 Aug 2015 09:58:01 -0500 Subject: [PATCH] Change launcher flags for single instance of app Closes #301 --- src/main/AndroidManifest.xml | 7 +++-- .../astrid/activity/ShortcutActivity.java | 11 +++++-- .../astrid/activity/TaskListActivity.java | 31 ++++++++++++------- .../java/org/tasks/widget/WidgetHelper.java | 5 +-- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 666ae1711..ada723af3 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -128,7 +128,8 @@ + android:windowSoftInputMode="stateHidden|adjustResize" + android:launchMode="singleTask" > @@ -141,8 +142,7 @@ + android:name="com.todoroo.astrid.activity.ShortcutActivity"> @@ -161,6 +161,7 @@ + diff --git a/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java b/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java index 4ddd811aa..8a6ccaf75 100644 --- a/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java @@ -56,20 +56,25 @@ public class ShortcutActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - launchTaskList(getIntent()); + launchTaskList(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); - launchTaskList(intent); + setIntent(intent); + + launchTaskList(); } - private void launchTaskList(Intent intent) { + private void launchTaskList() { + Intent intent = getIntent(); + Bundle extras = intent.getExtras(); Intent taskListIntent = new Intent(this, TaskListActivity.class); + taskListIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); if(extras != null && extras.containsKey(TOKEN_CUSTOM_CLASS)) { taskListIntent.putExtras(intent.getExtras()); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 4740867f6..4452ad0c8 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -112,8 +112,27 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); navigationDrawer.setUp(drawerLayout); - initializeFragments(); + View editFragment = findViewById(R.id.taskedit_fragment_container); + + if(editFragment != null) { + fragmentLayout = LAYOUT_DOUBLE; + } else { + fragmentLayout = LAYOUT_SINGLE; + } + + readIntent(); + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + + setIntent(intent); + readIntent(); + } + + private void readIntent() { Bundle extras = getIntent().getExtras(); if (extras != null) { extras = (Bundle) extras.clone(); @@ -218,16 +237,6 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList return BuiltInFilterExposer.getMyTasksFilter(getResources()); } - protected void initializeFragments() { - View editFragment = findViewById(R.id.taskedit_fragment_container); - - if(editFragment != null) { - fragmentLayout = LAYOUT_DOUBLE; - } else { - fragmentLayout = LAYOUT_SINGLE; - } - } - @Override public boolean onFilterItemClicked(FilterListItem item) { TaskEditFragment.removeExtrasFromIntent(getIntent()); diff --git a/src/main/java/org/tasks/widget/WidgetHelper.java b/src/main/java/org/tasks/widget/WidgetHelper.java index 6be210ee1..c8fcd6a11 100644 --- a/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/src/main/java/org/tasks/widget/WidgetHelper.java @@ -35,13 +35,14 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.inject.Singleton; +import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; @Singleton public class WidgetHelper { - public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK; + public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP; private final TagDataDao tagDataDao; private final Preferences preferences; @@ -105,7 +106,7 @@ public class WidgetHelper { Bundle extras = AndroidUtilities.bundleFromSerializedString(serializedExtras); listIntent.putExtras(extras); } - listIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); + listIntent.setFlags(flags); if (filter != null) { listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); listIntent.setAction("L" + widgetId + filter.getSqlQuery());