美文网首页
Android优化驱动速度

Android优化驱动速度

作者: 5e1b18effb55 | 来源:发表于2017-08-25 17:17 被阅读0次

    冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

    热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

    • 首先要优化写在Application的onCreate方法里面耗时操作:
      把初始化的东西移动到IntentService来解决
    /**
     * An {@link IntentService} subclass for handling asynchronous task requests in
     * a service on a separate handler thread.
     * <p>
     * TODO: Customize class - update intent actions, extra parameters and static
     * helper methods.
     */
    public class InitializeService extends IntentService {
    
        private static final String ACTION_INIT_WHEN_APP_CREATE = "com.imyuu.travel.service.init.action.INIT";
    
        public InitializeService() {
            super("InitializeService");
        }
    
        public static void start(Context context) {
            Intent intent = new Intent(context, InitializeService.class);
            intent.setAction(ACTION_INIT_WHEN_APP_CREATE);
            context.startService(intent);
        }
    
        @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() {
            Logger.init(this);
    
            ExternalStorgeUtils.init();
    
            // init crash helper
            CrashHandler.getInstance().init(getApplicationContext());
    
            // init Push
            initPushPlatform();
    
            initX5();
        }
    }
    

    然后在Application的onCreate方法里面向下面这样调用:

    @Override
        public void onCreate() {
            super.onCreate();
            InitializeService.start(this);
        }
    

    当然了,需要开启页面就用到的初始化还是要放到onCreate里面的

    • 然后需要解决APP进程完全被系统回收的情况,也就是冷启动

    这种情况下,开启APP,需要系统重新走一遍启动流程:

    Application的构造器方法——>attachBaseContext()——>onCreate()——>Activity的构造方法——>onCreate()——>配置主题中背景等属性——>onStart()——>onResume()——>测量布局绘制显示在界面上。

    这种时候要解决白屏只需要重写一个主题,把里面的windowBackground更换一下就好了,然后把它设置成你的启动activity的主题,代码如下:

    <!-- 启动主题 -->
        <style name="customBackground" parent="@android:style/Theme.Holo.Light">
            <item name="android:windowBackground">@drawable/splash_layers</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowAnimationStyle">@style/notAnimation</item>
            <item name="android:windowFullscreen">true</item>
        </style>
    

    splash_layers.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <bitmap
                android:gravity="fill"
                android:src="@mipmap/index_bg" />
        </item>
        <item>
            <bitmap
                android:gravity="center"
                android:src="@mipmap/index_img1" />
        </item>
        <!--<item>
            <bitmap
                android:gravity="bottom|center"
                android:src="@drawable/splash_bottom" />
        </item>-->
    </layer-list>
    

    相关文章

      网友评论

          本文标题:Android优化驱动速度

          本文链接:https://www.haomeiwen.com/subject/qetpdxtx.html