diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-05-14 10:14:14 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-05-14 10:14:14 +0300 |
| commit | fc11ab32a9747467749f86076592e89c2ef5ad6b (patch) | |
| tree | e73aefe3ea185259b3eaa4541c4651619a2103fc | |
| parent | 9da98b2abb5eddfec8c8a5ef51f5bdbbcaeecf21 (diff) | |
add workaround for headlines loader being recreated for different activities
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java | 3 | ||||
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesLoader.java | 23 |
2 files changed, 17 insertions, 9 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index d0f4fa94..a3a1bb46 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -93,7 +93,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements @NonNull @Override public Loader<ArticleList> onCreateLoader(int id, @Nullable Bundle args) { - return new HeadlinesLoader(getContext(), m_feed, m_activity.getResizeWidth()); + return new HeadlinesLoader(getContext(), m_feed, m_activity.getResizeWidth(), Application.getArticles()); } @Override @@ -564,6 +564,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment implements if (m_loader == null) { m_loader = (HeadlinesLoader) LoaderManager.getInstance(this). initLoader(Application.LOADER_HEADLINES, null, this); + } if (m_swipeLayout != null) diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesLoader.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesLoader.java index 38ae19f4..812a745e 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesLoader.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesLoader.java @@ -45,19 +45,24 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api private boolean m_lazyLoadEnabled = true; private boolean m_loadingInProgress; - HeadlinesLoader(Context context, Feed feed, int resizeWidth) { + HeadlinesLoader(Context context, Feed feed, int resizeWidth, ArticleList articles) { super(context); + Log.d(TAG, "HeadlinesLoader created!"); + m_context = context; m_lastError = ApiError.NO_ERROR; m_feed = feed; m_articles = new ArticleList(); + + m_articles.addAll(articles); + m_resizeWidth = resizeWidth; m_prefs = PreferenceManager.getDefaultSharedPreferences(context); } protected void startLoading(boolean append) { - // Log.d(TAG, this + " refresh, append=" + append + " inProgress=" + m_loadingInProgress + " lazyLoadEnabled=" + m_lazyLoadEnabled); + Log.d(TAG, this + " startLoading append=" + append + " inProgress=" + m_loadingInProgress + " lazyLoadEnabled=" + m_lazyLoadEnabled + "localSize="+ m_articles.size()); if (!append) { m_append = false; @@ -68,7 +73,7 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api m_append = true; forceLoad(); } else { - reset(); + deliverResult(m_articles); } } @@ -95,7 +100,7 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api @Override public ArticleList loadInBackground() { - Log.d(TAG, "loadInBackground append=" + m_append + " offset=" + m_offset); + Log.d(TAG, this + " loadInBackground append=" + m_append + " offset=" + m_offset); m_loadingInProgress = true; @@ -145,7 +150,7 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api params.put("include_header", "true"); } - Log.d(TAG, "request more headlines, firstId=" + m_firstId + ", append=" + m_append + ", skip=" + skip); + Log.d(TAG, "firstId=" + m_firstId + " append=" + m_append + " skip=" + skip + " localSize=" + m_articles.size()); JsonElement result = ApiCommon.performRequest(m_context, params, this); @@ -169,7 +174,7 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api m_firstId = 0; } - Log.d(TAG, "firstID=" + m_firstId + " firstIdChanged=" + m_firstIdChanged); + Log.d(TAG, this + " firstID=" + m_firstId + " firstIdChanged=" + m_firstIdChanged); Type listType = new TypeToken<List<Article>>() {}.getType(); articlesJson = new Gson().fromJson(content.get(1), listType); @@ -178,7 +183,7 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api articlesJson = new Gson().fromJson(content, listType); } - if (skip == 0) + if (!m_append) m_articles.clear(); m_amountLoaded = articlesJson.size(); @@ -197,13 +202,15 @@ public class HeadlinesLoader extends AsyncTaskLoader<ArticleList> implements Api } if (m_amountLoaded < Integer.parseInt(m_prefs.getString("headlines_request_size", "15"))) { - Log.d(TAG, "amount loaded "+m_amountLoaded+" < request size, disabling lazy load"); + Log.d(TAG, this + " amount loaded "+m_amountLoaded+" < request size, disabling lazy load"); m_lazyLoadEnabled = false; } m_offset += m_amountLoaded; m_loadingInProgress = false; + Log.d(TAG, this + " loaded headlines=" + m_amountLoaded + " resultingLocalSize=" + m_articles.size()); + return m_articles; } |