Resolved issues:
Changing fragments outside UI thread
Download of gapps does not stop anymore.
MD5 check does not crash
diff --git a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
index 68dfc26..6357be9 100644
--- a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
+++ b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
@@ -178,9 +178,26 @@
public void run()
{
+ System.out.println(" +++++++++++++++++++++++++++++++ running startDownloadProgressUpdateThread +++++++++++++++++++++++++++++++ ");
boolean downloading = true;
- long latestUpdateDownloadId = mainActivity.getLatestDownloadId();
+ long latestUpdateDownloadId = 0;
+
+ int count = 3;
+
+ while (((latestUpdateDownloadId = mainActivity.getLatestDownloadId()) <= 0) && count > 0){
+ try
+ {
+ Thread.sleep(2000);
+ System.out.println(" +++++++++++++++++++++++++++++++ count: " + count + " +++++++++++++++++++++++++++++++ ");
+ count--;
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ System.out.println(" +++++++++++++++++++++++++++++++ " + latestUpdateDownloadId + " +++++++++++++++++++++++++++++++ ");
+
while (mDownloadManager != null && latestUpdateDownloadId != 0 && downloading)
{
@@ -188,6 +205,10 @@
q.setFilterById(latestUpdateDownloadId);
Cursor cursor = mDownloadManager != null ? mDownloadManager.query(q) : null;
+
+ if(cursor == null){
+ System.out.println(" +++++++++++++++++++++++++++++++ cursor is null +++++++++++++++++++++++++++++++ ");
+ }
if (cursor != null && cursor.moveToFirst())
{
try
@@ -381,18 +402,24 @@
Cursor cursor = mDownloadManager != null ? mDownloadManager.query(query) : null;
+ System.out.println(" ---------------------- cursor : " + cursor + " ----------------------------------");
+
if (cursor != null && cursor.moveToFirst())
{
int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
int status = cursor.getInt(columnIndex);
+ System.out.println("status from cursor: " + status);
+
switch (status)
{
+
case DownloadManager.STATUS_SUCCESSFUL:
mainActivity.updateStatePreference(UpdaterState.PREINSTALL);
toggleDownloadProgressAndRestart();
break;
case DownloadManager.STATUS_RUNNING:
+ case DownloadManager.STATUS_PENDING:
startDownloadProgressUpdateThread();
break;
case DownloadManager.STATUS_FAILED: