AB test and instrument swipe between lists enabled or disabled

pull/14/head
Sam Bosley 12 years ago
parent 9519517073
commit 80843660c4

@ -96,6 +96,8 @@ public class AstridActivity extends FragmentActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContextManager.setContext(this);
StatisticsService.sessionStart(this);
new StartupService().onStartupApplication(this);
}
@ -115,10 +117,18 @@ public class AstridActivity extends FragmentActivity
@Override
protected void onPause() {
super.onPause();
StatisticsService.sessionPause();
AndroidUtilities.tryUnregisterReceiver(this, reminderReceiver);
AndroidUtilities.tryUnregisterReceiver(this, repeatConfirmationReceiver);
}
@Override
protected void onStop() {
super.onStop();
StatisticsService.sessionStop(this);
}
/**
* Handles items being clicked from the filterlist-fragment. Return true if item is handled.
*/

@ -29,6 +29,7 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.TagSettingsActivity;
@ -51,6 +52,7 @@ import com.todoroo.astrid.ui.FragmentPopover;
import com.todoroo.astrid.ui.MainMenuPopover;
import com.todoroo.astrid.ui.MainMenuPopover.MainMenuListener;
import com.todoroo.astrid.ui.TaskListFragmentPager;
import com.todoroo.astrid.utility.AstridPreferences;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
@ -198,12 +200,34 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
if (getIntent().hasExtra(TOKEN_SOURCE)) {
trackActivitySource();
}
trackUserRetention();
}
private boolean swipeIsEnabled() {
return fragmentLayout == LAYOUT_SINGLE && swipeEnabled;
}
private void trackUserRetention() {
long firstLaunchTime = Preferences.getLong(AstridPreferences.P_FIRST_LAUNCH, 0);
long now = DateUtilities.now();
long timeSinceFirst = now - firstLaunchTime;
if (timeSinceFirst < DateUtilities.ONE_DAY * 3 && !Preferences.getBoolean(StatisticsConstants.APP_OPEN_THREE_DAYS, false)) {
StatisticsService.reportEvent(StatisticsConstants.APP_OPEN_THREE_DAYS);
Preferences.setBoolean(StatisticsConstants.APP_OPEN_THREE_DAYS, true);
} else if (timeSinceFirst < DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.APP_OPEN_ONE_WEEK, false)) {
StatisticsService.reportEvent(StatisticsConstants.APP_OPEN_ONE_WEEK);
Preferences.setBoolean(StatisticsConstants.APP_OPEN_ONE_WEEK, true);
} else if (timeSinceFirst < 2 * DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.APP_OPEN_TWO_WEEKS, false)) {
StatisticsService.reportEvent(StatisticsConstants.APP_OPEN_TWO_WEEKS);
Preferences.setBoolean(StatisticsConstants.APP_OPEN_TWO_WEEKS, true);
} else if (timeSinceFirst < 3 * DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.APP_OPEN_THREE_WEEKS, false)) {
StatisticsService.reportEvent(StatisticsConstants.APP_OPEN_THREE_WEEKS);
Preferences.setBoolean(StatisticsConstants.APP_OPEN_THREE_WEEKS, true);
}
}
@Override
public TaskListFragment getTaskListFragment() {
if (swipeIsEnabled()) {

@ -578,7 +578,6 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
@Override
public void onStop() {
StatisticsService.sessionStop(getActivity());
super.onStop();
}
@ -586,8 +585,6 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
public void onResume() {
super.onResume();
StatisticsService.sessionStart(getActivity());
getActivity().registerReceiver(detailReceiver,
new IntentFilter(AstridApiConstants.BROADCAST_SEND_DETAILS));
getActivity().registerReceiver(detailReceiver,
@ -675,7 +672,6 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
@Override
public void onPause() {
super.onPause();
StatisticsService.sessionPause();
AndroidUtilities.tryUnregisterReceiver(getActivity(), detailReceiver);
AndroidUtilities.tryUnregisterReceiver(getActivity(), refreshReceiver);

@ -248,7 +248,10 @@ public class TaskDao extends DatabaseDao<Task> {
long firstLaunchTime = Preferences.getLong(AstridPreferences.P_FIRST_LAUNCH, 0);
long now = DateUtilities.now();
long timeSinceFirst = now - firstLaunchTime;
if (timeSinceFirst < DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.TASK_ONE_WEEK, false)) {
if (timeSinceFirst < DateUtilities.ONE_DAY * 3 && !Preferences.getBoolean(StatisticsConstants.TASK_THREE_DAYS, false)) {
StatisticsService.reportEvent(StatisticsConstants.TASK_THREE_DAYS);
Preferences.setBoolean(StatisticsConstants.TASK_THREE_DAYS, true);
} else if (timeSinceFirst < DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.TASK_ONE_WEEK, false)) {
StatisticsService.reportEvent(StatisticsConstants.TASK_ONE_WEEK);
Preferences.setBoolean(StatisticsConstants.TASK_ONE_WEEK, true);
} else if (timeSinceFirst < 2 * DateUtilities.ONE_WEEK && !Preferences.getBoolean(StatisticsConstants.TASK_TWO_WEEKS, false)) {

@ -42,6 +42,7 @@ import com.todoroo.astrid.opencrx.OpencrxCoreUtils;
import com.todoroo.astrid.producteev.ProducteevUtilities;
import com.todoroo.astrid.reminders.ReminderStartupReceiver;
import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.service.abtesting.ABOptions;
import com.todoroo.astrid.service.abtesting.FeatureFlipper;
import com.todoroo.astrid.utility.AstridPreferences;
import com.todoroo.astrid.utility.Constants;
@ -212,6 +213,7 @@ public class StartupService {
}
}).start();
abChooser.getChoiceForOption(ABOptions.AB_OPTION_SWIPE_ENABLED_KEY);
AstridPreferences.setPreferenceDefaults();
// check for task killers

@ -64,9 +64,15 @@ public class StatisticsConstants {
public static final String TASK_RABBIT_POST = "task-rabbit-post";
public static final String TASK_RABBIT_LOGIN = "task-rabbit-login";
public static final String TASK_THREE_DAYS = "task-created-three-days";
public static final String TASK_ONE_WEEK = "task-created-one-week";
public static final String TASK_TWO_WEEKS = "task-created-two-weeks";
public static final String TASK_THREE_WEEKS = "task-created-three-weeks";
public static final String APP_OPEN_THREE_DAYS = "app-open-three-days";
public static final String APP_OPEN_ONE_WEEK = "app-open-one-week";
public static final String APP_OPEN_TWO_WEEKS = "app-open-two-weeks";
public static final String APP_OPEN_THREE_WEEKS = "app-open-three-weeks";
}

@ -201,7 +201,8 @@ public final class UpgradeService {
if (from < V4_1_0) {
newVersionString(changeLog, "4.1.0 (4/16/12)", new String[] {
"Swipe between lists! Swipe left and right to move through your lists",
"Swipe between lists! Swipe left and right to move through your lists. Enable or adjust " +
"performance of this feature in the 'Performance' section of Settings.",
"Assign tasks to friends by choosing from your phone contacts",
"Click on task titles in comments to edit those tasks",
"Astrid.com sync improvements",

@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.todoroo.astrid.service.StatisticsConstants;
/**
* Helper class to define options with their probabilities and descriptions
* @author Sam Bosley <sam@astrid.com>
@ -166,5 +168,15 @@ public class ABOptions {
private void initialize() { // Set up
//Calls to addOption go here
addOption(AB_OPTION_SWIPE_ENABLED_KEY, AB_OPTION_SWIPE_ENABLED_PROBS, AB_OPTION_SWIPE_ENABLED_DESC, AB_OPTION_SWIPE_ENABLED_EVENTS);
}
public static final String AB_OPTION_SWIPE_ENABLED_KEY = "swipeEnabled"; //$NON-NLS-1$
private static final int[] AB_OPTION_SWIPE_ENABLED_PROBS = { 1, 1 };
@SuppressWarnings("nls")
private static final String[] AB_OPTION_SWIPE_ENABLED_DESC = { "swipe-lists-enabled", "swipe-lists-disabled" };
private static final String[] AB_OPTION_SWIPE_ENABLED_EVENTS = { StatisticsConstants.APP_OPEN_THREE_DAYS,
StatisticsConstants.APP_OPEN_ONE_WEEK,
StatisticsConstants.APP_OPEN_TWO_WEEKS,
StatisticsConstants.APP_OPEN_THREE_WEEKS };
}

@ -11,6 +11,8 @@ import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.service.abtesting.ABOptions;
public class AstridPreferences {
@ -46,7 +48,9 @@ public class AstridPreferences {
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_default_random_hours, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_fontSize, 18);
Preferences.setIfUnset(prefs, editor, r, R.string.p_showNotes, false);
Preferences.setIfUnset(prefs, editor, r, R.string.p_swipe_lists_performance_key, 3);
boolean swipeEnabled = (ABChooser.readChoiceForOption(ABOptions.AB_OPTION_SWIPE_ENABLED_KEY) == 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_swipe_lists_performance_key, swipeEnabled ? 3 : 0);
if ("white-blue".equals(Preferences.getStringValue(R.string.p_theme))) { //$NON-NLS-1$ migrate from when white-blue wasn't the default
Preferences.setString(R.string.p_theme, ThemeService.THEME_WHITE);

Loading…
Cancel
Save