This is an automated email from the ASF dual-hosted git repository. zshshr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push: new 6e9edfc [Android] support for hot updates under specified ports 6e9edfc is described below commit 6e9edfc2660e8c93bc97f1a6173b039396ff952b Author: erha19 <faterr...@gmail.com> AuthorDate: Mon Nov 26 20:43:57 2018 +0800 [Android] support for hot updates under specified ports --- .../main/java/com/alibaba/weex/WXPageActivity.java | 41 +++++++++++++++------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java index 8a5408d..01f496d 100644 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java +++ b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java @@ -54,14 +54,18 @@ import com.alibaba.weex.https.WXHttpTask; import com.alibaba.weex.https.WXRequestListener; import com.taobao.weex.IWXRenderListener; import com.taobao.weex.RenderContainer; +import com.taobao.weex.WXEnvironment; import com.taobao.weex.WXSDKEngine; import com.taobao.weex.WXSDKInstance; import com.taobao.weex.appfram.navigator.IActivityNavBarSetter; +import com.taobao.weex.bridge.WXBridgeManager; +import com.taobao.weex.common.IWXDebugProxy; import com.taobao.weex.common.WXRenderStrategy; import com.taobao.weex.ui.component.NestedContainer; import com.taobao.weex.ui.component.WXComponent; import com.taobao.weex.ui.component.WXVContainer; import com.taobao.weex.utils.WXFileUtils; +import com.taobao.weex.utils.WXJsonUtils; import com.taobao.weex.utils.WXLogUtils; import java.io.File; @@ -70,6 +74,8 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, Handler.Callback, WXSDKInstance.NestedInstanceInterceptor { @@ -182,7 +188,7 @@ public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, ctx.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect); mConfigMap.put("bundleUrl", mUri.toString()); String path = "file".equals(mUri.getScheme()) ? assembleFilePath(mUri) : mUri.toString(); - mInstance.render(path, WXFileUtils.loadAsset(path, WXPageActivity.this), + mInstance.render(TAG, WXFileUtils.loadAsset(path, WXPageActivity.this), mConfigMap, null, WXRenderStrategy.APPEND_ASYNC); } @@ -242,13 +248,8 @@ public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, public void onSuccess(WXHttpTask task) { Log.i(TAG, "into--[http:onSuccess] url:" + url); try { - Uri uri = Uri.parse(url); mConfigMap.put("bundleUrl", url); - if (uri.getPath().endsWith(".wlasm")){ - mInstance.render(TAG, task.response.data, mConfigMap, null); - } else { - mInstance.render(TAG, new String(task.response.data, "utf-8"), mConfigMap, null, WXRenderStrategy.APPEND_ASYNC); - } + mInstance.render(TAG, new String(task.response.data, "utf-8"), mConfigMap, null, WXRenderStrategy.APPEND_ASYNC); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } @@ -270,14 +271,28 @@ public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, */ private void startHotRefresh() { try { - String host = new URL(mUri.toString()).getHost(); - String wsUrl = "ws://" + host + ":8082"; + URL url = new URL(mUri.toString()); + String host = url.getHost(); + String query = url.getQuery(); + String wsport = getUrlParam("wsport", query); + String wsUrl = "ws://" + host + ":" + (wsport.equals("") ? "8082" : wsport) ; mWXHandler.obtainMessage(Constants.HOT_REFRESH_CONNECT, 0, 0, wsUrl).sendToTarget(); } catch (MalformedURLException e) { e.printStackTrace(); } } + private String getUrlParam(String key, String queryString) { + String regex = "[?|&]?" + key + "=([^&]+)"; + Pattern p = Pattern.compile(regex); + Matcher matcher = p.matcher(queryString); + if (matcher.find()) { + return matcher.group(1); + } else { + return ""; + } + } + private void addOnListener() { } @@ -517,8 +532,8 @@ public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, private void registerBroadcastReceiver() { mReceiver = new RefreshBroadcastReceiver(); IntentFilter filter = new IntentFilter(); - filter.addAction(WXSDKInstance.ACTION_DEBUG_INSTANCE_REFRESH); - filter.addAction(WXSDKInstance.ACTION_INSTANCE_RELOAD); + filter.addAction(IWXDebugProxy.ACTION_DEBUG_INSTANCE_REFRESH); + filter.addAction(IWXDebugProxy.ACTION_INSTANCE_RELOAD); registerReceiver(mReceiver, filter); } @@ -588,8 +603,8 @@ public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, public class RefreshBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - if (WXSDKInstance.ACTION_INSTANCE_RELOAD.equals(intent.getAction()) || - WXSDKInstance.ACTION_DEBUG_INSTANCE_REFRESH.equals(intent.getAction())) { + if (IWXDebugProxy.ACTION_INSTANCE_RELOAD.equals(intent.getAction()) || + IWXDebugProxy.ACTION_DEBUG_INSTANCE_REFRESH.equals(intent.getAction())) { // String myUrl = intent.getStringExtra("url"); // Log.e("WXPageActivity", "RefreshBroadcastReceiver reload onReceive ACTION_DEBUG_INSTANCE_REFRESH mBundleUrl:" + myUrl + " mUri:" + mUri);