diff options
author | David-Development <david-dev@live.de> | 2022-05-22 19:26:04 +0300 |
---|---|---|
committer | David Luhmer <david-dev@live.de> | 2022-05-22 19:26:04 +0300 |
commit | bb3f5b71ade452d30d5022b3281dea18c0be25fd (patch) | |
tree | 9a2a942748100d5e6a25cc14a1d88ec5ff8c2537 | |
parent | fe15c6c573dd7d6dd79a68f18e450614e95083a3 (diff) |
fix several app crashed / update to 0.9.9.73
Signed-off-by: David Luhmer <david-dev@live.de>
5 files changed, 58 insertions, 29 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 579eb24e..075b5f6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +0.9.9.73 (Beta) +--------------------- +- Fixed - <a href="https://github.com/nextcloud/news-android/issues/1061">#1061 App sometimes crashes on long tap on detail view</a> +- Fixed several app crashes + - fixed database crashed by reducing the number of loaded items per page + - fixed crash when long tapping folders in navigation drawer + - fixed app crash when ui updates + - fixed crashes caused by swiping on articles in list view + + 0.9.9.72 (Beta) --------------------- - Added - <a href="https://github.com/nextcloud/news-android/pull/1066">!1066 Support for Folder Management (Rename, Remove, Create) (thanks @proninyaroslav)</a> diff --git a/News-Android-App/build.gradle b/News-Android-App/build.gradle index 333458b6..47b84eae 100644 --- a/News-Android-App/build.gradle +++ b/News-Android-App/build.gradle @@ -27,8 +27,8 @@ android { vectorDrawables.useSupportLibrary = true - versionCode 175 - versionName "0.9.9.72" + versionCode 176 + versionName "0.9.9.73" } buildFeatures { diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java index 12d342ad..73a8910f 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java @@ -21,6 +21,14 @@ package de.luhmer.owncloudnewsreader; +import static java.util.Objects.requireNonNull; +import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_STARRED_ITEMS; +import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_UNREAD_ITEMS; +import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION; +import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION_DEFAULT; +import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION; +import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION_DEFAULT; + import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -76,14 +84,6 @@ import de.luhmer.owncloudnewsreader.helper.Search; import de.luhmer.owncloudnewsreader.helper.StopWatch; import io.reactivex.observers.DisposableObserver; -import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_STARRED_ITEMS; -import static de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_UNREAD_ITEMS; -import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION; -import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION_DEFAULT; -import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION; -import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION_DEFAULT; -import static java.util.Objects.requireNonNull; - /** * A fragment representing a single NewsReader detail screen. This fragment is * either contained in a {@link NewsReaderListActivity} in two-pane mode (on @@ -511,9 +511,7 @@ public class NewsReaderDetailFragment extends Fragment { DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(NewsReaderDetailFragment.this.getContext()); SORT_DIRECTION sortDirection = getSortDirection(mPrefs); boolean onlyUnreadItems = mPrefs.getBoolean(SettingsActivity.CB_SHOWONLYUNREAD_STRING, false); - boolean onlyStarredItems = false; - if (idFolder != null && idFolder == ALL_STARRED_ITEMS.getValue()) - onlyStarredItems = true; + boolean onlyStarredItems = idFolder != null && idFolder == ALL_STARRED_ITEMS.getValue(); String sqlSelectStatement = null; if (idFeed != null) { @@ -541,7 +539,7 @@ public class NewsReaderDetailFragment extends Fragment { List<RssItem> items = dbConn.getCurrentRssItemView(0); sw.stop(); - Log.v(TAG, "Time needed (init loading): " + sw.toString()); + Log.v(TAG, "Time needed (init loading): " + sw); return items; } @@ -581,6 +579,15 @@ public class NewsReaderDetailFragment extends Fragment { initEdgeDistance(); } + if (e1 == null) { + Log.e(TAG, "motion event 1 is null"); + return false; + } + if (e2 == null) { + Log.e(TAG, "motion event 2 is null"); + return false; + } + if (mMarkAsReadWhileScrollingEnabled && e1.getX() > minLeftEdgeDistance && // only if gesture starts a bit away from left window edge (e2.getY() - e1.getY()) < 0) { // and if swipe direction is upwards diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java index f88b165b..adb9fda6 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java @@ -617,13 +617,13 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements startDialogFragment(idFeed, false); } - private void startDialogFragment(long idFeed, Boolean isFolder) { + private void startDialogFragment(long id, Boolean isFolder) { DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(getApplicationContext()); if (!isFolder) { - String titel = dbConn.getFeedById(idFeed).getFeedTitle(); - String iconurl = dbConn.getFeedById(idFeed).getFaviconUrl(); - String feedurl = dbConn.getFeedById(idFeed).getLink(); + String titel = dbConn.getFeedById(id).getFeedTitle(); + String iconurl = dbConn.getFeedById(id).getFaviconUrl(); + String feedurl = dbConn.getFeedById(id).getLink(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment prev = getSupportFragmentManager().findFragmentByTag("news_reader_list_dialog"); @@ -632,11 +632,16 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements } ft.addToBackStack(null); - NewsReaderListDialogFragment fragment = NewsReaderListDialogFragment.newInstance(idFeed, titel, iconurl, feedurl); + NewsReaderListDialogFragment fragment = NewsReaderListDialogFragment.newInstance(id, titel, iconurl, feedurl); fragment.setActivity(this); fragment.show(ft, "news_reader_list_dialog"); } else { - String label = dbConn.getFolderById(idFeed).getLabel(); + Folder folder = dbConn.getFolderById(id); + if (folder == null) { + Log.e(TAG, "cannot find folder with id: " + id); + return; + } + String label = folder.getLabel(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment prev = getSupportFragmentManager().findFragmentByTag("folder_options_dialog"); @@ -645,7 +650,7 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements } ft.addToBackStack(null); - FolderOptionsDialogFragment fragment = FolderOptionsDialogFragment.newInstance(idFeed, label); + FolderOptionsDialogFragment fragment = FolderOptionsDialogFragment.newInstance(id, label); fragment.setActivity(this); fragment.show(ft, "folder_options_dialog"); } @@ -1091,10 +1096,15 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements } private void resetUiAndStartSync() { - getSlidingListFragment().reloadAdapter(); - updateCurrentRssView(); - startSync(); - getSlidingListFragment().bindUserInfoToUI(); + NewsReaderListFragment nrlf = getSlidingListFragment(); + if (nrlf != null) { + nrlf.reloadAdapter(); + updateCurrentRssView(); + startSync(); + nrlf.bindUserInfoToUI(); + } else { + Log.e(TAG, "resetUiAndStartSync - NewsReaderListFragment is not available") + } } private void UpdateListView() { diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java index b2665c30..3711411c 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java @@ -65,7 +65,7 @@ public class DatabaseConnectionOrm { private final DaoSession daoSession; - private final static int PageSize = 100; + private final static int PageSize = 25; protected @Inject @Named("databaseFileName") String databasePath; @@ -292,11 +292,13 @@ public class DatabaseConnectionOrm { daoSession.getDatabase().execSQL(sql); */ + // 100 causes android.database.sqlite.SQLiteBlobTooBigException on some devices + final int itemsPerIteration = 25; + WhereCondition whereCondition = new WhereCondition.StringCondition(RssItemDao.Properties.Id.columnName + " IN " + "(SELECT " + CurrentRssItemViewDao.Properties.RssItemId.columnName + " FROM " + CurrentRssItemViewDao.TABLENAME + ")"); int iterationCount = 0; - final int itemsPerIteration = 100; List<RssItem> rssItemList; do { int offset = iterationCount * itemsPerIteration; @@ -380,7 +382,7 @@ public class DatabaseConnectionOrm { daoSession.getDatabase().execSQL(sql); sw.stop(); - Log.v(TAG, "Time needed for marking all unread items as read: " + sw.toString()); + Log.v(TAG, "Time needed for marking all unread items as read: " + sw); } public LazyList<RssItem> getAllUnreadRssItemsForDownloadWebPageService() { @@ -640,7 +642,7 @@ public class DatabaseConnectionOrm { }); sw.stop(); - Log.v(TAG, "Time needed for insert: " + sw.toString()); + Log.v(TAG, "Time needed for insert: " + sw); } public String getUnreadItemsCountForSpecificFolder(SPECIAL_FOLDERS specialFolder) { |