You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by zs...@apache.org on 2018/11/27 03:48:46 UTC
[incubator-weex] branch master updated: [Android] support for hot
updates under specified ports
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 <fa...@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);