fix: 简单优化启动耗时问题

This commit is contained in:
chenjuntao
2024-08-05 11:43:00 +08:00
parent 9b57d10e2d
commit eb08575f3e
21 changed files with 136 additions and 90 deletions

View File

@ -61,6 +61,7 @@ import com.gh.gamecenter.common.utils.NewFlatLogUtils;
import com.gh.gamecenter.common.utils.PackageFlavorHelper;
import com.gh.gamecenter.common.utils.SensorsBridge;
import com.gh.gamecenter.common.utils.ShareUtils;
import com.gh.gamecenter.core.provider.IAppProvider;
import com.gh.gamecenter.core.provider.IDownloadManagerProvider;
import com.gh.gamecenter.core.provider.IEntranceUtilsProvider;
import com.gh.gamecenter.core.provider.IPackageInstallerProvider;
@ -159,6 +160,10 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
}
}
// 图片加载库 Fresco 在 Application 以异步的形式初始化
// 但当应用重建时,可能出现异步初始化尚未完成就调用 SimpleDraweeView 方法的情况,所以在这里同步卡一下初始化
initImageLoaderIfNeeded();
fixBadParcelableExceptionIfNeeded(savedInstanceState);
super.onCreate(savedInstanceState);
@ -814,4 +819,14 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
super.attachBaseContext(newBase);
}
}
/**
* 初始化图片加载器
*/
private void initImageLoaderIfNeeded() {
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
if (appProvider != null) {
appProvider.initImageLoaderIfNeeded();
}
}
}

View File

@ -688,4 +688,21 @@ object ImageUtils {
}
}
/**
* 这里反射获取 sDraweecontrollerbuildersupplier 根据是否有值确定是否被初始化了
*/
@JvmStatic
fun isFrescoInitialized(): Boolean {
val clazz = SimpleDraweeView::class.java
return try {
val field =
clazz.getDeclaredField("sDraweecontrollerbuildersupplier")
field.isAccessible = true
val obj = field[SimpleDraweeView::class.java]
obj != null
} catch (ignore: java.lang.Exception) {
false
}
}
}