fix offline preparations to actually happen in background
This commit is contained in:
parent
cc1b9affb4
commit
469169c00d
@ -198,9 +198,11 @@ public class OfflineDownloadService extends Service {
|
|||||||
|
|
||||||
ApiRequest req = new ApiRequest(getApplicationContext()) {
|
ApiRequest req = new ApiRequest(getApplicationContext()) {
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(JsonElement content) {
|
protected JsonElement doInBackground(HashMap<String, String>... params) {
|
||||||
|
JsonElement content = super.doInBackground(params);
|
||||||
|
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Type listType = new TypeToken<List<Feed>>() {}.getType();
|
Type listType = new TypeToken<List<Feed>>() {}.getType();
|
||||||
List<Feed> feeds = new Gson().fromJson(content, listType);
|
List<Feed> feeds = new Gson().fromJson(content, listType);
|
||||||
@ -215,29 +217,35 @@ public class OfflineDownloadService extends Service {
|
|||||||
stmtInsert.bindString(3, feed.feed_url);
|
stmtInsert.bindString(3, feed.feed_url);
|
||||||
stmtInsert.bindLong(4, feed.has_icon ? 1 : 0);
|
stmtInsert.bindLong(4, feed.has_icon ? 1 : 0);
|
||||||
stmtInsert.bindLong(5, feed.cat_id);
|
stmtInsert.bindLong(5, feed.cat_id);
|
||||||
|
|
||||||
stmtInsert.execute();
|
stmtInsert.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
stmtInsert.close();
|
stmtInsert.close();
|
||||||
|
|
||||||
Log.d(TAG, "offline: done downloading feeds");
|
Log.d(TAG, "offline: done downloading feeds");
|
||||||
|
|
||||||
m_articleOffset = 0;
|
m_articleOffset = 0;
|
||||||
|
|
||||||
getWritableDb().execSQL("DELETE FROM articles;");
|
getWritableDb().execSQL("DELETE FROM articles;");
|
||||||
|
|
||||||
if (m_canProceed) {
|
|
||||||
downloadArticles();
|
|
||||||
} else {
|
|
||||||
downloadFailed();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
updateNotification(R.string.offline_switch_error);
|
updateNotification(R.string.offline_switch_error);
|
||||||
downloadFailed();
|
downloadFailed();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(JsonElement content) {
|
||||||
|
if (content != null) {
|
||||||
|
if (m_canProceed) {
|
||||||
|
downloadArticles();
|
||||||
|
} else {
|
||||||
|
downloadFailed();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
updateNotification(getErrorMessage());
|
updateNotification(getErrorMessage());
|
||||||
downloadFailed();
|
downloadFailed();
|
||||||
@ -266,10 +274,10 @@ public class OfflineDownloadService extends Service {
|
|||||||
getWritableDb().execSQL("DELETE FROM categories;");
|
getWritableDb().execSQL("DELETE FROM categories;");
|
||||||
|
|
||||||
ApiRequest req = new ApiRequest(getApplicationContext()) {
|
ApiRequest req = new ApiRequest(getApplicationContext()) {
|
||||||
@Override
|
protected JsonElement doInBackground(HashMap<String, String>... params) {
|
||||||
protected void onPostExecute(JsonElement content) {
|
JsonElement content = super.doInBackground(params);
|
||||||
|
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Type listType = new TypeToken<List<FeedCategory>>() {}.getType();
|
Type listType = new TypeToken<List<FeedCategory>>() {}.getType();
|
||||||
List<FeedCategory> cats = new Gson().fromJson(content, listType);
|
List<FeedCategory> cats = new Gson().fromJson(content, listType);
|
||||||
@ -289,17 +297,23 @@ public class OfflineDownloadService extends Service {
|
|||||||
|
|
||||||
Log.d(TAG, "offline: done downloading categories");
|
Log.d(TAG, "offline: done downloading categories");
|
||||||
|
|
||||||
if (m_canProceed) {
|
|
||||||
downloadFeeds();
|
|
||||||
} else {
|
|
||||||
downloadFailed();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
updateNotification(R.string.offline_switch_error);
|
updateNotification(R.string.offline_switch_error);
|
||||||
downloadFailed();
|
downloadFailed();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(JsonElement content) {
|
||||||
|
if (content != null) {
|
||||||
|
if (m_canProceed) {
|
||||||
|
downloadFeeds();
|
||||||
|
} else {
|
||||||
|
downloadFailed();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
updateNotification(getErrorMessage());
|
updateNotification(getErrorMessage());
|
||||||
downloadFailed();
|
downloadFailed();
|
||||||
@ -335,22 +349,27 @@ public class OfflineDownloadService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class OfflineArticlesRequest extends ApiRequest {
|
public class OfflineArticlesRequest extends ApiRequest {
|
||||||
|
List<Article> m_articles;
|
||||||
|
|
||||||
public OfflineArticlesRequest(Context context) {
|
public OfflineArticlesRequest(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(JsonElement content) {
|
protected JsonElement doInBackground(HashMap<String, String>... params) {
|
||||||
|
JsonElement content = super.doInBackground(params);
|
||||||
|
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Type listType = new TypeToken<List<Article>>() {}.getType();
|
Type listType = new TypeToken<List<Article>>() {}.getType();
|
||||||
List<Article> articles = new Gson().fromJson(content, listType);
|
m_articles = new Gson().fromJson(content, listType);
|
||||||
|
|
||||||
SQLiteStatement stmtInsert = getWritableDb().compileStatement("INSERT INTO articles " +
|
SQLiteStatement stmtInsert = getWritableDb().compileStatement("INSERT INTO articles " +
|
||||||
"("+BaseColumns._ID+", unread, marked, published, updated, is_updated, title, link, feed_id, tags, content) " +
|
"("+BaseColumns._ID+", unread, marked, published, updated, is_updated, title, link, feed_id, tags, content) " +
|
||||||
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
|
||||||
|
|
||||||
for (Article article : articles) {
|
for (Article article : m_articles) {
|
||||||
|
|
||||||
String tagsString = "";
|
String tagsString = "";
|
||||||
|
|
||||||
@ -402,25 +421,12 @@ public class OfflineDownloadService extends Service {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_articleOffset += m_articles.size();
|
||||||
|
|
||||||
|
Log.d(TAG, "offline: received " + m_articles.size() + " articles; canProc=" + m_canProceed);
|
||||||
|
|
||||||
stmtInsert.close();
|
stmtInsert.close();
|
||||||
|
|
||||||
//m_canGetMoreArticles = articles.size() == 30;
|
|
||||||
m_articleOffset += articles.size();
|
|
||||||
|
|
||||||
Log.d(TAG, "offline: received " + articles.size() + " articles; canProc=" + m_canProceed);
|
|
||||||
|
|
||||||
if (m_canProceed) {
|
|
||||||
if (articles.size() == OFFLINE_SYNC_SEQ && m_articleOffset < m_syncMax) {
|
|
||||||
downloadArticles();
|
|
||||||
} else {
|
|
||||||
downloadComplete();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
downloadFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
updateNotification(R.string.offline_switch_error);
|
updateNotification(R.string.offline_switch_error);
|
||||||
Log.d(TAG, "offline: failed: exception when loading articles");
|
Log.d(TAG, "offline: failed: exception when loading articles");
|
||||||
@ -428,6 +434,25 @@ public class OfflineDownloadService extends Service {
|
|||||||
downloadFailed();
|
downloadFailed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(JsonElement content) {
|
||||||
|
if (content != null) {
|
||||||
|
|
||||||
|
if (m_canProceed && m_articles != null) {
|
||||||
|
if (m_articles.size() == OFFLINE_SYNC_SEQ && m_articleOffset < m_syncMax) {
|
||||||
|
downloadArticles();
|
||||||
|
} else {
|
||||||
|
downloadComplete();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
downloadFailed();
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "offline: failed: " + getErrorMessage());
|
Log.d(TAG, "offline: failed: " + getErrorMessage());
|
||||||
updateNotification(getErrorMessage());
|
updateNotification(getErrorMessage());
|
||||||
|
Loading…
Reference in New Issue
Block a user