From d918078a9cc8816c5b597dd9cac9ea92ed050c3c Mon Sep 17 00:00:00 2001 From: Howard Yang Date: Sat, 28 Nov 2015 23:34:54 +0800 Subject: [PATCH] download file in background on Android --- .../microsoft/codepush/react/CodePush.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java index 2e343ea..fbbcd2b 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java @@ -23,6 +23,7 @@ import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.os.AsyncTask; import org.json.JSONException; import org.json.JSONObject; @@ -307,22 +308,29 @@ public class CodePush { @ReactMethod public void downloadUpdate(final ReadableMap updatePackage, final Promise promise) { - try { - codePushPackage.downloadPackage(applicationContext, updatePackage, new DownloadProgressCallback() { - @Override - public void call(DownloadProgress downloadProgress) { - getReactApplicationContext() - .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) - .emit(DOWNLOAD_PROGRESS_EVENT_NAME, downloadProgress.createWritableMap()); - } - }); + AsyncTask asyncTask = new AsyncTask() { + @Override + protected Object doInBackground(Object[] params) { + try { + codePushPackage.downloadPackage(applicationContext, updatePackage, new DownloadProgressCallback() { + @Override + public void call(DownloadProgress downloadProgress) { + getReactApplicationContext() + .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) + .emit(DOWNLOAD_PROGRESS_EVENT_NAME, downloadProgress.createWritableMap()); + } + }); - WritableMap newPackage = codePushPackage.getPackage(CodePushUtils.tryGetString(updatePackage, codePushPackage.PACKAGE_HASH_KEY)); - promise.resolve(newPackage); - } catch (IOException e) { - e.printStackTrace(); - promise.reject(e.getMessage()); - } + WritableMap newPackage = codePushPackage.getPackage(CodePushUtils.tryGetString(updatePackage, codePushPackage.PACKAGE_HASH_KEY)); + promise.resolve(newPackage); + } catch (IOException e) { + e.printStackTrace(); + promise.reject(e.getMessage()); + } + return null; + } + }; + asyncTask.execute(); } @ReactMethod @@ -424,4 +432,3 @@ public class CodePush { } } -