SmallStart
2017-01-24 16:22:21 0 举报
SmallStart是一个致力于帮助初创企业和个人实现梦想的平台。我们提供一系列创新的解决方案,包括商业咨询、技术支持和资金筹集等,以帮助您在竞争激烈的市场中脱颖而出。我们的团队由经验丰富的专业人士组成,他们具有广泛的行业知识和专业技能,能够为您提供量身定制的服务。无论您是想要启动一个全新的项目,还是想要扩大现有业务的规模,SmallStart都能为您提供所需的支持和资源。加入SmallStart,让我们一起携手共创美好未来!
作者其他创作
大纲/内容
setUp
preloadBundle创建 BundleParser 设置 so文件
small
resolveBundle
Application
prepareForLaunch
sPreloadBundles = bundles每个 bundle.prepareForLaunch()
LauncherActivity
调用每个onCreate
loadBundles(List)
onStart()
开了一个线程加载loadBundles(contex)会根据是否是升级的json 来进行解析json实例化每个Bundle initWithMapinitWithMap 会将 apk 地址,补丁地址 存储到Bundle 中apk 位置 包名 建立 uri路由
registerLauncher
onCreateLaunchers
Handle I/O
postSetUp
Bundle
获得 bundle 信息1. 包名2. apk 地址3. 是否有res4. 将 `application` 类信息5. 将 io 任务(加载dexFile) 放到任务队列6. so 库7. 注册的 `uri` 和 `activity` 的映射关系8. 设置默认启动 `activity`
BundleLaunchers
loadLaunchableBundles
ApkBundleLauncherpublic void onCreate(Application app)`Hook` 主线程(`mActivityThread`)替换 `mInstrumentation` 拦截 `intent`替换 `mCallback` 拦截系统 `handler` 用于启动 未注册 `Activity`获取 `providers`
(sBundleLaunchers.add())
ApkBundleLauncher`AOP` `TaskStackBuilder`动态代理 `TaskStackBuilder` 中的方法,将每个 `Intent` ```Javafor (Intent intent : intents) { sBundleInstrumentation.wrapIntent(intent); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER);}```
onCreate
registerLauncher(new ActivityLauncher()); registerLauncher(new ApkBundleLauncher()); registerLauncher(new WebBundleLauncher());
loadBundle(Bundle bundle)
for each bundleLaunchers.Oncreate()
setupLaunchers(context)
preSetUp
create
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容