Просмотр исходного кода

[修改]将H5界面移至新进程打开

zeki лет назад: 5
Родитель
Сommit
a325654afa

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -458,6 +458,7 @@
                 android:configChanges="orientation|screenSize"
                 android:exported="true"
                 android:screenOrientation="portrait"
+                android:process=":webProcess"
                 android:theme="@style/AppActionTheme"/>
         <activity
                 android:name="com.sheep.gamegroup.view.activity.ActWebX5YF"

+ 1 - 10
app/src/main/java/com/sheep/gamegroup/module/webview/fragment/FgtWeb.java

@@ -34,16 +34,7 @@ import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.dateview.DateUtil;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.WebParams;
-import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.Constant;
-import com.sheep.gamegroup.util.DataUtil;
-import com.sheep.gamegroup.util.DeviceUtil;
-import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.LogUtil;
-import com.sheep.gamegroup.util.StringUtils;
-import com.sheep.gamegroup.util.SysAppUtil;
-import com.sheep.gamegroup.util.TestUtil;
-import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.*;
 import com.sheep.gamegroup.util.js.KFZSJs;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.MiddleSchemeAct;

+ 7 - 13
app/src/main/java/com/sheep/gamegroup/module/webview/fragment/FgtWebX5.java

@@ -25,15 +25,7 @@ import android.widget.ProgressBar;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.dateview.DateUtil;
 import com.sheep.gamegroup.model.entity.WebParams;
-import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.Constant;
-import com.sheep.gamegroup.util.DataUtil;
-import com.sheep.gamegroup.util.DeviceUtil;
-import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.LogUtil;
-import com.sheep.gamegroup.util.StringUtils;
-import com.sheep.gamegroup.util.TestUtil;
-import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.*;
 import com.sheep.gamegroup.util.js.KFZSJs;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.MiddleSchemeAct;
@@ -44,6 +36,7 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.tencent.protocol.sspservice.App;
 import com.tencent.smtt.export.external.interfaces.WebResourceError;
 import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
 import com.tencent.smtt.export.external.interfaces.WebResourceResponse;
@@ -176,6 +169,7 @@ public class FgtWebX5 extends BaseFgtWebX5 {
         if (BuildConfig.DEBUG) {
             WebView.setWebContentsDebuggingEnabled(true);
         }
+
         webView.setClickable(true);
         WebSettings webSetting = webView.getSettings();
         webSetting.setJavaScriptEnabled(true);
@@ -184,7 +178,7 @@ public class FgtWebX5 extends BaseFgtWebX5 {
         //webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
         //自适应屏幕
         WebSettings.ZoomDensity zoomDensity = WebSettings.ZoomDensity.MEDIUM;
-        switch (SheepApp.getInstance().screenDensity) {
+        switch (G.DENSITY_DPI) {
             case DisplayMetrics.DENSITY_LOW:
                 zoomDensity = WebSettings.ZoomDensity.CLOSE;
                 break;
@@ -410,8 +404,8 @@ public class FgtWebX5 extends BaseFgtWebX5 {
 
             @Override
             public WebResourceResponse shouldInterceptRequest(WebView webView, String s) {
-                if(url.contains("h5.qzone.qq.com")){
-                    if(s.equals("https://qzonestyle.gtimg.cn/qz-proj/qz-common/img/m-error/pic-error.png")){
+                if (url.contains("h5.qzone.qq.com")) {
+                    if (s.equals("https://qzonestyle.gtimg.cn/qz-proj/qz-common/img/m-error/pic-error.png")) {
                         needWxLogin = true;
                         kfzsJs.loginThirdPartApp("wx");
                     }
@@ -717,7 +711,7 @@ public class FgtWebX5 extends BaseFgtWebX5 {
         }
         cookieManager.flush();
         CookieSyncManager.createInstance(getContext()).sync();
-        if(needWxLogin){
+        if (needWxLogin) {
             needWxLogin = false;
             loadUrl(webParams.getUrl());
         }

+ 3 - 0
app/src/main/java/com/sheep/gamegroup/util/AppUtil.java

@@ -92,6 +92,9 @@ public class AppUtil {
         return TextUtils.equals(context.getPackageName(), getCurProcessName(context));
     }
 
+    public static boolean isWebProcess(Context context){
+        return getCurProcessName(context).contains("webProcess");
+    }
 
     public static String getCurProcessName(Context context){
         int pid = android.os.Process.myPid();

+ 0 - 6
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -36,7 +36,6 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 import android.widget.TextView;
-
 import com.alibaba.fastjson.JSONArray;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
@@ -70,7 +69,6 @@ import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.ShowRedDot;
 import com.sheep.gamegroup.module.game.util.HpRefreshWelfareHelper;
-import com.sheep.gamegroup.module.guide.NewbieGuideHelper;
 import com.sheep.gamegroup.module.home.GoodsRecommendsBarHelper;
 import com.sheep.gamegroup.module.home.adapter.AdpHomeList;
 import com.sheep.gamegroup.module.home.fragment.FgtDailyPlayList;
@@ -109,20 +107,16 @@ import com.sunfusheng.marqueeview.MarqueeView;
 import com.youth.banner.Banner;
 import com.youth.banner.BannerConfig;
 import com.youth.banner.loader.ImageLoader;
-
 import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
-
 import java.lang.ref.WeakReference;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
-
 import javax.inject.Inject;
-
 import butterknife.BindView;
 import butterknife.OnClick;
 import io.reactivex.android.schedulers.AndroidSchedulers;

+ 27 - 13
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -7,6 +7,7 @@ import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.StrictMode;
+import android.support.annotation.RequiresApi;
 import android.support.multidex.MultiDex;
 import android.support.multidex.MultiDexApplication;
 import android.text.TextUtils;
@@ -69,13 +70,16 @@ import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.tencent.smtt.sdk.QbSdk;
 import com.stmsdk.AbsTMSConfig;
 import com.stmsdk.TMSDKContext;
+import com.tencent.smtt.sdk.WebView;
 import com.umeng.commonsdk.UMConfigure;
 import com.umeng.socialize.PlatformConfig;
 import com.youmi.android.offer.YmConfig;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 import org.xutils.x;
+
 import java.lang.ref.WeakReference;
+
 import cn.jpush.android.api.JPushInterface;
 import io.reactivex.plugins.RxJavaPlugins;
 import ren.yale.android.cachewebviewlib.WebViewCacheInterceptor;
@@ -83,6 +87,8 @@ import ren.yale.android.cachewebviewlib.WebViewCacheInterceptorInst;
 import ren.yale.android.cachewebviewlib.config.CacheExtensionConfig;
 import tv.danmaku.ijk.media.exo2.Exo2PlayerManager;
 
+import static com.sheep.gamegroup.util.AppUtil.getCurProcessName;
+
 /**
  * Created by kemllor on 2017/12/21.
  */
@@ -93,8 +99,6 @@ public class SheepApp extends MultiDexApplication {
     public ConnectAddress connectAddress;
     private WeakReference<Activity> activityRef;
 
-    public int screenDensity;
-
     private NetComponent netComponent;
     private boolean isShowQB;
     private boolean isInitMidong = false;
@@ -199,10 +203,11 @@ public class SheepApp extends MultiDexApplication {
     public void onCreate() {
 //        configStrictMode();
         super.onCreate();
-        if (AppUtil.isMainProcess(this)) {
-            mSheepApp = this;
+        initWebViewDataDirectory(this);
+        if (AppUtil.isMainProcess(this) || AppUtil.isWebProcess(this)) {
             boolean isNotSupport = Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1;
             ContextHolder.setContext(this);
+            mSheepApp = this;
             connectAddress = ConnectAddress.sheep.getDefaultConnectAddress();
             if (!isNotSupport) {
                 registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
@@ -221,9 +226,7 @@ public class SheepApp extends MultiDexApplication {
             }*/
 
             /*Rx兜底策略*/
-            RxJavaPlugins.setErrorHandler(throwable -> {
-                Log.e("RxThrowable", throwable.getMessage());
-            });
+            RxJavaPlugins.setErrorHandler(throwable -> Log.e("RxThrowable", throwable.getMessage()));
 
             /*点客广告SDK接入*/
             TMSDKContext.setTMSDKLogEnable(BuildConfig.DEBUG);
@@ -236,15 +239,26 @@ public class SheepApp extends MultiDexApplication {
 
             /*三方广告SDK接入,游可盈、优投等*/
             initThirdAd();
+        }
+    }
 
-            //屏幕dp获取
-            screenDensity = getResources().getDisplayMetrics().densityDpi;
-
+    /**
+     * 为webView设置目录后缀
+     *
+     * @param context
+     */
+    public static void initWebViewDataDirectory(Context context) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            String processName = getProcessName();
+            if (!context.getPackageName().equals(processName)) {//判断是否是默认进程名称
+                WebView.setDataDirectorySuffix(processName);
+                android.webkit.WebView.setDataDirectorySuffix(processName);
+            }
         }
     }
 
     //初始化三方广告SDK
-    private void initThirdAd(){
+    private void initThirdAd() {
         SheepApp.getInstance().getNetComponent()
                 .getApiService()
                 .commonConfig("third_ad")
@@ -260,7 +274,7 @@ public class SheepApp extends MultiDexApplication {
                     public void onNext(BaseMessage baseMessage) {
                         ThirdAdsConfigEntity thirdAdsConfigEntity = baseMessage.getData(ThirdAdsConfigEntity.class);
                         initYKYAd(thirdAdsConfigEntity.getYkyConfig().getAppid());
-                        initYTAd(thirdAdsConfigEntity.getYtConfig().getAppid(),thirdAdsConfigEntity.getYtConfig().getAd_id());
+                        initYTAd(thirdAdsConfigEntity.getYtConfig().getAppid(), thirdAdsConfigEntity.getYtConfig().getAd_id());
                     }
                 });
     }
@@ -298,7 +312,7 @@ public class SheepApp extends MultiDexApplication {
     }
 
     //加载优投广告
-    private void initYTAd(String appId,String adId) {
+    private void initYTAd(String appId, String adId) {
         JasmineEngine.getInstance(this).init(
                 appId,
                 Integer.parseInt(adId),