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
        

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

   
   

   
   

在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

你可能感兴趣的:(Android app冷启动)