Skip to content

Commit 8e80bcb

Browse files
committed
Merge pull request #419 from wordpress-mobile/issue/411-stats-crash
Limit the amount of group data we load to MAX_ITEMS so that we don’t sp...
2 parents f61536d + d39e7b5 commit 8e80bcb

File tree

8 files changed

+23
-22
lines changed

8 files changed

+23
-22
lines changed

src/org/wordpress/android/datasets/StatsClickGroupsTable.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.net.Uri;
1010

1111
import org.wordpress.android.models.StatsClickGroup;
12+
import org.wordpress.android.ui.stats.StatsActivity;
1213
import org.wordpress.android.ui.stats.StatsTimeframe;
1314

1415
/**
@@ -87,12 +88,12 @@ public static ContentValues getContentValues(StatsClickGroup item) {
8788
@Override
8889
public Cursor query(SQLiteDatabase database, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
8990

90-
String sort = NAME + "." + Columns.TOTAL + " DESC, " + NAME + "." + Columns.NAME + " ASC";
91+
String sort = NAME + "." + Columns.TOTAL + " DESC, " + NAME + "." + Columns.NAME + " ASC LIMIT " + StatsActivity.STATS_GROUP_MAX_ITEMS;
9192

9293
String timeframe = uri.getQueryParameter("timeframe");
9394
if (timeframe == null)
9495
return super.query(database, uri, projection, selection, selectionArgs, sort);
95-
96+
9697
// get the latest for "Today", and the next latest for "Yesterday"
9798
if (timeframe.equals(StatsTimeframe.TODAY.name())) {
9899
return database.rawQuery("SELECT * FROM " + NAME +", " +

src/org/wordpress/android/datasets/StatsGeoviewsTable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.net.Uri;
1010

1111
import org.wordpress.android.models.StatsGeoview;
12+
import org.wordpress.android.ui.stats.StatsActivity;
1213
import org.wordpress.android.ui.stats.StatsTimeframe;
1314

1415
/**
@@ -77,7 +78,7 @@ public static ContentValues getContentValues(StatsGeoview item) {
7778
@Override
7879
public Cursor query(SQLiteDatabase database, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
7980

80-
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.COUNTRY + " ASC";
81+
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.COUNTRY + " ASC LIMIT " + StatsActivity.STATS_GROUP_MAX_ITEMS;
8182

8283
String timeframe = uri.getQueryParameter("timeframe");
8384
if (timeframe == null)

src/org/wordpress/android/datasets/StatsReferrerGroupsTable.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package org.wordpress.android.datasets;
22

3-
import java.util.LinkedHashMap;
4-
import java.util.Map;
5-
63
import android.content.ContentValues;
74
import android.database.Cursor;
85
import android.database.sqlite.SQLiteDatabase;
96
import android.net.Uri;
107

118
import org.wordpress.android.models.StatsReferrerGroup;
9+
import org.wordpress.android.ui.stats.StatsActivity;
1210
import org.wordpress.android.ui.stats.StatsTimeframe;
1311

12+
import java.util.LinkedHashMap;
13+
import java.util.Map;
14+
1415
/**
1516
* A database table to represent groups in the stats for referrers.
1617
* A group may or may not have children.
@@ -88,7 +89,7 @@ public static ContentValues getContentValues(StatsReferrerGroup item) {
8889
@Override
8990
public Cursor query(SQLiteDatabase database, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
9091

91-
String sort = NAME + "." + Columns.TOTAL + " DESC, " + NAME + "." + Columns.NAME + " ASC";
92+
String sort = NAME + "." + Columns.TOTAL + " DESC, " + NAME + "." + Columns.NAME + " ASC LIMIT " + StatsActivity.STATS_GROUP_MAX_ITEMS;
9293

9394
String timeframe = uri.getQueryParameter("timeframe");
9495
if (timeframe == null)

src/org/wordpress/android/datasets/StatsSearchEngineTermsTable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.net.Uri;
1010

1111
import org.wordpress.android.models.StatsSearchEngineTerm;
12+
import org.wordpress.android.ui.stats.StatsActivity;
1213
import org.wordpress.android.ui.stats.StatsTimeframe;
1314

1415
/**
@@ -73,7 +74,7 @@ public static ContentValues getContentValues(StatsSearchEngineTerm item) {
7374

7475
@Override
7576
public Cursor query(SQLiteDatabase database, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
76-
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.SEARCH + " ASC";
77+
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.SEARCH + " ASC LIMIT " + StatsActivity.STATS_GROUP_MAX_ITEMS;
7778

7879
String timeframe = uri.getQueryParameter("timeframe");
7980
if (timeframe == null)

src/org/wordpress/android/datasets/StatsTopPostsAndPagesTable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.net.Uri;
1010

1111
import org.wordpress.android.models.StatsTopPostsAndPages;
12+
import org.wordpress.android.ui.stats.StatsActivity;
1213
import org.wordpress.android.ui.stats.StatsTimeframe;
1314

1415
/**
@@ -79,7 +80,7 @@ public static ContentValues getContentValues(StatsTopPostsAndPages item) {
7980

8081
@Override
8182
public Cursor query(SQLiteDatabase database, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
82-
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.TITLE + " ASC";
83+
String sort = NAME + "." + Columns.VIEWS + " DESC, " + NAME + "." + Columns.TITLE + " ASC LIMIT " + StatsActivity.STATS_GROUP_MAX_ITEMS;
8384

8485
String timeframe = uri.getQueryParameter("timeframe");
8586
if (timeframe == null)

src/org/wordpress/android/ui/stats/StatsActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@
5454
*/
5555
public class StatsActivity extends WPActionBarActivity {
5656

57+
// Max number of rows to show in a stats fragment
58+
public static final int STATS_GROUP_MAX_ITEMS = 10;
59+
5760
private static final String SAVED_NAV_POSITION = "SAVED_NAV_POSITION";
5861
private static final String SAVED_WP_LOGIN_STATE = "SAVED_WP_LOGIN_STATE";
5962
private static final int REQUEST_JETPACK = 7000;

src/org/wordpress/android/ui/stats/StatsCursorFragment.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@
1717
import android.view.View;
1818
import android.view.ViewGroup;
1919
import android.widget.LinearLayout;
20-
import android.widget.ListView;
2120
import android.widget.TextView;
2221

2322
import com.actionbarsherlock.app.SherlockFragment;
2423

2524
import org.wordpress.android.R;
2625
import org.wordpress.android.WordPress;
27-
import org.wordpress.android.util.Utils;
2826

2927
/**
3028
* A fragment that appears as a 'page' in the {@link StatsAbsPagedViewFragment}.
@@ -41,7 +39,6 @@
4139
*/
4240
public class StatsCursorFragment extends SherlockFragment implements LoaderManager.LoaderCallbacks<Cursor> {
4341

44-
private static final int MAX_ITEMS_ON_TABLET = 10;
4542
private static final String ARGS_URI = "ARGS_URI";
4643
private static final String ARGS_ENTRY_LABEL = "ARGS_ENTRY_LABEL";
4744
private static final String ARGS_TOTALS_LABEL = "ARGS_TOTALS_LABEL";
@@ -164,7 +161,7 @@ private void reloadLinearLayout() {
164161
mLinearLayout.removeAllViews();
165162

166163
// limit number of items to show otherwise it would cause performance issues on the linearlayout
167-
int count = Math.min(mAdapter.getCount(), MAX_ITEMS_ON_TABLET);
164+
int count = Math.min(mAdapter.getCount(), StatsActivity.STATS_GROUP_MAX_ITEMS);
168165
for (int i = 0; i < count; i++) {
169166
View view = mAdapter.getView(i, null, mLinearLayout);
170167
if (i % 2 == 1)

src/org/wordpress/android/ui/stats/StatsCursorTreeFragment.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@
1919
import android.view.View.OnClickListener;
2020
import android.view.ViewGroup;
2121
import android.widget.CursorTreeAdapter;
22-
import android.widget.ExpandableListView;
2322
import android.widget.LinearLayout;
2423
import android.widget.TextView;
2524

2625
import com.actionbarsherlock.app.SherlockFragment;
2726

2827
import org.wordpress.android.R;
2928
import org.wordpress.android.WordPress;
30-
import org.wordpress.android.util.Utils;
3129

3230
/**
3331
* A fragment that appears as a 'page' in the {@link StatsAbsPagedViewFragment}. Similar to {@link StatsCursorFragment},
@@ -48,9 +46,7 @@
4846
*/
4947
public class StatsCursorTreeFragment extends SherlockFragment implements LoaderManager.LoaderCallbacks<Cursor>, StatsCursorLoaderCallback {
5048

51-
private static final int MAX_ITEMS_ON_TABLET = 10;
5249
private static final int LOADER_URI_GROUP_INDEX = -1;
53-
5450
private static final String ARGS_GROUP_URI = "ARGS_GROUP_URI";
5551
private static final String ARGS_CHILDREN_URI = "ARGS_CHILDREN_URI";
5652
private static final String ARGS_ENTRY_LABEL = "ARGS_ENTRY_LABEL";
@@ -175,19 +171,19 @@ public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
175171

176172
// cursor is for groups
177173
if (loader.getId() == LOADER_URI_GROUP_INDEX) {
178-
174+
179175
// start loaders on children
180176
while (data.moveToNext()) {
181177
String groupId = data.getString(data.getColumnIndex("groupId"));
182178
long date = data.getLong(data.getColumnIndex("date"));
183-
179+
184180
Bundle bundle = new Bundle();
185181
bundle.putString(StatsCursorLoaderCallback.BUNDLE_GROUP_ID, groupId);
186182
bundle.putLong(StatsCursorLoaderCallback.BUNDLE_DATE, date);
187-
183+
188184
getLoaderManager().restartLoader(data.getPosition(), bundle, StatsCursorTreeFragment.this);
189185
}
190-
186+
191187

192188
mCallback.onCursorLoaded(getGroupUri(), data);
193189

@@ -235,7 +231,7 @@ private void reloadLinearLayout() {
235231
mLinearLayout.removeAllViews();
236232

237233
// limit number of items to show otherwise it would cause performance issues on the linearlayout
238-
int groupCount = Math.min(mAdapter.getGroupCount(), MAX_ITEMS_ON_TABLET);
234+
int groupCount = Math.min(mAdapter.getGroupCount(), StatsActivity.STATS_GROUP_MAX_ITEMS);
239235
for (int i = 0; i < groupCount; i++) {
240236

241237
boolean isExpanded = mGroupIdToExpandedMap.get(i);

0 commit comments

Comments
 (0)