得物.apk(点击下载) / HybridWorkHandler.java
package com.shizhuang.duapp.hybrid;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import com.meituan.robust.ChangeQuickRedirect;
import com.meituan.robust.PatchProxy;
import com.meituan.robust.PatchProxyResult;
import com.meizu.cloud.pushsdk.notification.model.TimeDisplaySetting;
import com.shizhuang.duapp.hybrid.cache.StorageManager;
import com.shizhuang.duapp.hybrid.cache.model.ProgramStorageModel;
import com.shizhuang.duapp.hybrid.download.PackageDownloader;
import com.shizhuang.duapp.hybrid.download.ProgramDownloader;
import com.shizhuang.duapp.hybrid.download.ResourceDownloader;
import com.shizhuang.duapp.hybrid.offline.LocalResourceManager;
import com.shizhuang.duapp.hybrid.request.PackageRequester;
import com.shizhuang.duapp.hybrid.request.ProgramRequester;
import com.shizhuang.duapp.hybrid.request.ProgramsInfo;
import com.shizhuang.duapp.hybrid.request.RequestException;
import com.shizhuang.duapp.hybrid.request.ResourcesRequester;
import com.shizhuang.duapp.hybrid.request.ResponseCallBack;
import com.shizhuang.duapp.hybrid.upload.UploadZipFileManager;
import com.shizhuang.duapp.hybrid.utils.DataGsonUtil;
import fo.a;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import p4.d;
import p4.f;
public final class HybridWorkHandler {
public static ChangeQuickRedirect changeQuickRedirect;
public static AtomicBoolean isResourcesDownloading = new AtomicBoolean(false);
public static AtomicLong lastPackagesRequestTime = new AtomicLong();
public static AtomicLong lastProgramsRequestTime = new AtomicLong();
public static AtomicLong lastResourcesRequestTime = new AtomicLong();
private static Handler sHandler;
private static void configOfflinePackage(ProgramDownloader programDownloader, ResourceDownloader resourceDownloader, ProgramsInfo programsInfo, StorageManager storageManager, UploadZipFileManager uploadZipFileManager) {
if (!PatchProxy.proxy(new Object[]{programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17818, new Class[]{ProgramDownloader.class, ResourceDownloader.class, ProgramsInfo.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported) {
Map<String, ProgramsInfo.ItemProgram> map = programsInfo.toMap();
LocalResourceManager.getInstance().setPrograms(map, programsInfo);
for (String str : map.keySet()) {
ProgramsInfo.ItemProgram itemProgram = map.get(str);
if (itemProgram.getAvailable() == 1 && itemProgram.getPreloadUrls() != null && itemProgram.getPreloadUrls().size() > 0) {
Bundle bundle = new Bundle();
bundle.putParcelable("KEY_MMKV_PROGRAM_INFO_KEY", itemProgram);
getHandler().post(new PreloadUrlsDownloadTask(resourceDownloader, storageManager, bundle));
}
ProgramStorageModel programStorageModel = (ProgramStorageModel) DataGsonUtil.stringToData((String) storageManager.getMMKVConfig(LocalResourceManager.getProgramItemKey(itemProgram.getName()), ""), ProgramStorageModel.class);
if (programStorageModel == null) {
getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
} else {
getHandler().post(new ProgramsCleanTask(storageManager, programStorageModel));
ProgramsInfo.ItemProgram itemProgram2 = programStorageModel.currentProgram;
if (itemProgram2 == null) {
getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
} else if (!itemProgram2.equals(itemProgram)) {
getHandler().post(new ProgramsTask(programDownloader, resourceDownloader, storageManager, uploadZipFileManager, getProgramTaskBundle(itemProgram)));
}
}
}
}
}
public static synchronized Handler getHandler() {
synchronized (HybridWorkHandler.class) {
PatchProxyResult proxy = PatchProxy.proxy(new Object[0], null, changeQuickRedirect, true, 17814, new Class[0], Handler.class);
if (proxy.isSupported) {
return (Handler) proxy.result;
}
if (sHandler == null) {
d dVar = new d("hybrid_work_thread", 10, "com.shizhuang.duapp.hybrid.HybridWorkHandler");
dVar.setName(f.a(dVar.getName(), "com.shizhuang.duapp.hybrid.HybridWorkHandler"));
dVar.start();
sHandler = new Handler(dVar.getLooper());
}
return sHandler;
}
}
private static Bundle getProgramTaskBundle(ProgramsInfo.ItemProgram itemProgram) {
PatchProxyResult proxy = PatchProxy.proxy(new Object[]{itemProgram}, null, changeQuickRedirect, true, 17821, new Class[]{ProgramsInfo.ItemProgram.class}, Bundle.class);
if (proxy.isSupported) {
return (Bundle) proxy.result;
}
Bundle bundle = new Bundle();
bundle.putParcelable("KEY_MMKV_PROGRAM_INFO_KEY", itemProgram);
return bundle;
}
private static Bundle getTaskBundle(String str, String str2, boolean z) {
PatchProxyResult proxy = PatchProxy.proxy(new Object[]{str, str2, new Byte(z ? (byte) 1 : 0)}, null, changeQuickRedirect, true, 17820, new Class[]{String.class, String.class, Boolean.TYPE}, Bundle.class);
if (proxy.isSupported) {
return (Bundle) proxy.result;
}
Bundle bundle = new Bundle();
bundle.putString("KEY_URL", Uri.parse(str).buildUpon().appendQueryParameter(TimeDisplaySetting.TIME_DISPLAY_SETTING, String.valueOf(System.currentTimeMillis())).build().toString());
bundle.putString("KEY_MMKV_STOREKEY", str2);
bundle.putBoolean("KEY_IS_NEWVERSION", z);
return bundle;
}
public static void handlerProgramsInfo(ProgramDownloader programDownloader, ResourceDownloader resourceDownloader, ProgramsInfo programsInfo, StorageManager storageManager, UploadZipFileManager uploadZipFileManager) {
boolean z = false;
if (!PatchProxy.proxy(new Object[]{programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17817, new Class[]{ProgramDownloader.class, ResourceDownloader.class, ProgramsInfo.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported && programsInfo != null) {
try {
HtmlCacheManager.getInstance().setProgramsInfo(programsInfo);
LocalResourceManager instance = LocalResourceManager.getInstance();
if (programsInfo.available == 1) {
z = true;
}
instance.setOfflineProgram(z);
if (programsInfo.isOfflinePackageConfigValid()) {
configOfflinePackage(programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager);
}
WebPreFetchConfigManager.getInstance().onConfigUpdate(programsInfo.preFetchConfig);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void postPackageTask(PackageRequester packageRequester, PackageDownloader packageDownloader, StorageManager storageManager) {
if (!PatchProxy.proxy(new Object[]{packageRequester, packageDownloader, storageManager}, null, changeQuickRedirect, true, 17819, new Class[]{PackageRequester.class, PackageDownloader.class, StorageManager.class}, Void.TYPE).isSupported) {
long currentTimeMillis = System.currentTimeMillis() - lastPackagesRequestTime.get();
long pollRequestInterval = packageRequester.getConfig().pollRequestInterval();
a.u("hybridInfo").i("package: pollRequestIntervalConfig : %s", Long.valueOf(pollRequestInterval));
if (currentTimeMillis > pollRequestInterval) {
a.u("hybridInfo").i("start update Offline packages..", new Object[0]);
getHandler().post(new PackagesTask(packageRequester, packageDownloader, storageManager, getTaskBundle("https://cdn.poizon.com/node-common/h5-package-info.json", "KEY_COMMON_PACKAGE_MODEL", true)));
return;
}
a.u("hybridInfo").i("package: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
}
}
public static void postProgramTask(ProgramRequester programRequester, final ProgramDownloader programDownloader, final ResourceDownloader resourceDownloader, final StorageManager storageManager, final UploadZipFileManager uploadZipFileManager) {
if (!PatchProxy.proxy(new Object[]{programRequester, programDownloader, resourceDownloader, storageManager, uploadZipFileManager}, null, changeQuickRedirect, true, 17816, new Class[]{ProgramRequester.class, ProgramDownloader.class, ResourceDownloader.class, StorageManager.class, UploadZipFileManager.class}, Void.TYPE).isSupported) {
long currentTimeMillis = System.currentTimeMillis() - lastProgramsRequestTime.get();
long pollRequestInterval = programRequester.getConfig().pollRequestInterval();
if (currentTimeMillis > pollRequestInterval) {
a.u("hybridInfo").i("start update Offline program..", new Object[0]);
try {
HtmlCacheManager.getInstance().setProgramLoadStatus(1);
programRequester.getConfig(new ResponseCallBack() {
/* class com.shizhuang.duapp.hybrid.HybridWorkHandler.AnonymousClass1 */
public static ChangeQuickRedirect changeQuickRedirect;
@Override // com.shizhuang.duapp.hybrid.request.ResponseCallBack
public void onFail(RequestException requestException) {
if (!PatchProxy.proxy(new Object[]{requestException}, this, changeQuickRedirect, false, 17823, new Class[]{RequestException.class}, Void.TYPE).isSupported) {
HtmlCacheManager.getInstance().setProgramLoadStatus(3);
requestException.printStackTrace();
}
}
@Override // com.shizhuang.duapp.hybrid.request.ResponseCallBack
public void onSuccess(String str) {
boolean z = true;
if (!PatchProxy.proxy(new Object[]{str}, this, changeQuickRedirect, false, 17822, new Class[]{String.class}, Void.TYPE).isSupported && !TextUtils.isEmpty(str)) {
HtmlCacheManager.getInstance().setProgramLoadStatus(2);
ProgramsInfo programsInfo = (ProgramsInfo) DataGsonUtil.stringToData(str, ProgramsInfo.class);
if (programsInfo != null) {
HtmlCacheManager instance = HtmlCacheManager.getInstance();
if (programsInfo.preLoad != 1) {
z = false;
}
instance.setCacheHtml(z);
HybridWorkHandler.handlerProgramsInfo(programDownloader, resourceDownloader, programsInfo, storageManager, uploadZipFileManager);
HybridWorkHandler.lastProgramsRequestTime.set(System.currentTimeMillis());
storageManager.storeMMKVConfig("KEY_PROGRAM_LIST_MODEL", str);
HtmlCacheEnhancer.getInstance().updateConfig(programsInfo.preloadConfig);
HtmlCacheEnhancer.getInstance().updatePreRenderConfig(programsInfo.preRenderConfig);
}
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
} else {
a.u("hybridInfo").i("program: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
}
}
}
public static void postResourceTask(ResourcesRequester resourcesRequester, ResourceDownloader resourceDownloader, StorageManager storageManager) {
if (!PatchProxy.proxy(new Object[]{resourcesRequester, resourceDownloader, storageManager}, null, changeQuickRedirect, true, 17815, new Class[]{ResourcesRequester.class, ResourceDownloader.class, StorageManager.class}, Void.TYPE).isSupported) {
long currentTimeMillis = System.currentTimeMillis() - lastResourcesRequestTime.get();
long pollRequestInterval = resourcesRequester.getConfig().pollRequestInterval();
if (currentTimeMillis > pollRequestInterval) {
a.u("hybridInfo").i("start update Offline resource..", new Object[0]);
getHandler().post(new ResourcesTask(resourcesRequester, resourceDownloader, storageManager));
return;
}
a.u("hybridInfo").i("resource: requestInterval < pollRequestIntervalConfig: %s", Long.valueOf(pollRequestInterval));
}
}
}