From d62b56cc1c320517dbb6cc52c7ce6112fcb6e881 Mon Sep 17 00:00:00 2001 From: Unpublished Date: Wed, 20 Jan 2021 10:49:28 +0100 Subject: Avoid leaking lazy list cursor Signed-off-by: Unpublished --- .../owncloudnewsreader/NewsDetailActivity.java | 20 +++++++-------- .../database/DatabaseConnectionOrm.java | 30 +++++++++++----------- 2 files changed, 25 insertions(+), 25 deletions(-) (limited to 'News-Android-App/src/main/java') diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java index 86878af3..62ae7fc8 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java @@ -38,6 +38,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; +import java.lang.ref.WeakReference; +import java.util.HashSet; +import java.util.Set; + +import javax.inject.Inject; + import androidx.appcompat.widget.AppCompatImageButton; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; @@ -46,16 +52,9 @@ import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; - -import java.lang.ref.WeakReference; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.inject.Inject; - import butterknife.BindView; import butterknife.ButterKnife; +import de.greenrobot.dao.query.LazyList; import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm; import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm.SORT_DIRECTION; import de.luhmer.owncloudnewsreader.database.model.RssItem; @@ -103,7 +102,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity { private MenuItem menuItem_Read; private DatabaseConnectionOrm dbConn; - public List rssItems; + public LazyList rssItems; protected @Inject SharedPreferences mPrefs; @@ -180,7 +179,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); - rssItems = dbConn.getCurrentRssItemView(-1); + rssItems = dbConn.getAllRssItems(); //If the Activity gets started from the Widget, read the item id and get the selected index in the cursor. if(intent.hasExtra(WidgetProvider.RSS_ITEM_ID)) { @@ -296,6 +295,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity { @Override protected void onDestroy() { super.onDestroy(); + rssItems.close(); } private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() { 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 987be4d1..12a36a22 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 @@ -448,22 +448,22 @@ public class DatabaseConnectionOrm { } public List getCurrentRssItemView(int page) { - if(page != -1) { - String where_clause = ", " + CurrentRssItemViewDao.TABLENAME + " C " - + " WHERE C." + CurrentRssItemViewDao.Properties.RssItemId.columnName + " = T." - + RssItemDao.Properties.Id.columnName - + " AND C._id > " + page * PageSize + " AND c._id <= " + ((page+1) * PageSize) - + " ORDER BY C." + CurrentRssItemViewDao.Properties.Id.columnName; - - return daoSession.getRssItemDao().queryRaw(where_clause); - } else { - String where_clause = ", " + CurrentRssItemViewDao.TABLENAME + " C " - + " WHERE C." + CurrentRssItemViewDao.Properties.RssItemId.columnName + " = T." - + RssItemDao.Properties.Id.columnName - + " ORDER BY C." + CurrentRssItemViewDao.Properties.Id.columnName; + String where_clause = ", " + CurrentRssItemViewDao.TABLENAME + " C " + + " WHERE C." + CurrentRssItemViewDao.Properties.RssItemId.columnName + " = T." + + RssItemDao.Properties.Id.columnName + + " AND C._id > " + page * PageSize + " AND c._id <= " + ((page+1) * PageSize) + + " ORDER BY C." + CurrentRssItemViewDao.Properties.Id.columnName; - return daoSession.getRssItemDao().queryRawCreate(where_clause).listLazy(); - } + return daoSession.getRssItemDao().queryRaw(where_clause); + } + + public LazyList getAllRssItems() { + String where_clause = ", " + CurrentRssItemViewDao.TABLENAME + " C " + + " WHERE C." + CurrentRssItemViewDao.Properties.RssItemId.columnName + " = T." + + RssItemDao.Properties.Id.columnName + + " ORDER BY C." + CurrentRssItemViewDao.Properties.Id.columnName; + + return daoSession.getRssItemDao().queryRawCreate(where_clause).listLazy(); } /* -- cgit v1.2.3