Android app冷启动

Android App启动流程:

冷启动app:Application:attachBaseContext()------>Application:onCreate()----->Activity:onCreate()

Application:attachBaseContext()

MultiDex.install();

Application:onCreate()
*第三方sdk初始化放在异步线程中
方案:
1、Thread 、AsyncTask、Handler
2、IntentService初始化

/**
 * 第三方sdk启动
 */
public class InitializeService extends IntentService {

    private static final String ACTION_INIT_WHEN_APP_CREATE = "com.app.start";
    private static String TAG = InitializeService.class.getSimpleName();

    public InitializeService() {
        super(TAG);
    }

    public InitializeService(String name) {
        super(name);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            final String action = intent.getAction();
            if (ACTION_INIT_WHEN_APP_CREATE.equals(action)) {
                performInit();
            }
        }
    }

    private void performInit() {
        //此处进行第三方sdk初始化
        //融360
        Context applicationContext = MyApplication.getInstance();
        CrawlerManager.initSDK(applicationContext);//初始化SDK
        CrawlerManager.getInstance().setDebug(true);
        /**
         * webView 内核初始化
         * 说明WebView 初处初始化耗时 250ms 左右。
         */
//        WebView mWebView=new WebView(new MutableContextWrapper(applicationContext));
    }

    public static void start(Context context) {
        Intent intent = new Intent(context, InitializeService.class);
        intent.setAction(ACTION_INIT_WHEN_APP_CREATE);
        context.startService(intent);
    }
}

//xml
        <service
            android:name=".app.service.InitializeService"
            android:exported="false"/>

Activity:onCreate()
在onCreate之前设置透明主题或者闪屏页
给用户秒开的视觉效果

   <!-- 透明主题 -->
   <style name="No_Splash_Light" parent="Theme.AppCompat.Light">
       <item name="android:windowBackground">@android:color/transparent</item>
       <item name="android:windowIsTranslucent">true</item>
       <item name="android:windowContentOverlay">@null</item>
   </style>

   <!-- 闪屏页主题 -->
   <style name="SplashTheme" parent="AppTheme">
       <item name="android:windowBackground">@mipmap/flash_icon</item>
       <item name="android:windowIsTranslucent">false</item>
       <item name="android:windowFullscreen">true</item>
   </style>

在Activiy.onCreate()方法中加载视图之前设置回原来主题

setTheme( R.style.AppTheme );

性能测试工具

项目地址:https://github.com/JakeWharton/hugo

参考

https://blog.csdn.net/u012811342/article/details/77568718
https://blog.csdn.net/u012124438/article/details/56340949
https://www.jianshu.com/p/f5514b1a826c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容