android 预加载进程(页面跳转白屏或黑屏)

作者: 杰少想去流浪 | 来源:发表于2016-08-03 16:34 被阅读1452次

    现象:
    第一次从一个进程的activity跳转到另一个进程的activity,会先呈现出黑屏(或白屏)的现象,然后才是第二个activity的界面。这是因为第一次跳转的时候,需要先启动另一个进程,而启动进程需要消耗一定的时间,而在这时间内会直接显示window的背景(黑色或者白色),因此会出现黑屏或者白屏的现象。
    解决办法:
    在跳转之前,预加载进程,从而避免启动进程的时间。如我在某个界面启动service,而该service在AndroidManifest.xml设置为想要开启的进程,这个用来预加载进程的service不需要实现什么功能,只要存在即可。

    AndroidManifest.xml:

    <service 
            android:name="com.eebbk.pointread.HideService" 
            android:process=":pointread"/>
    

    HideService:

    package com.eebbk.pointread;
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.support.annotation.Nullable;
    /**
     * Created by zhangshao on 2016/8/3. 
    *
     * 只是单纯的为了预加载点读进程,无其他意义 
    */
    public class HideService extends Service{   
            @Nullable  
            @Override   
            public IBinder onBind(Intent intent) {     
                    return null;   
            }
    }
    

    我在要跳转到另一个进程的activity中添加开启和停止服务的方法:

    /** 
    * 开始预加载进程 
    */
     private void startHideService(){ 
            Intent intent = new Intent(this, HideService.class); 
            this.startService(intent);
     } 
    
    private void stopHideService(){ 
            Intent intent = new Intent(this, HideService.class); 
            this.stopService(intent); 
    }
    

    在该activity的OnCreate()中调用:startHideService();
    在该activity的OnDestroy()中调用:stopHideService();

    总结
    预加载并不需要非得是Service,只要是看不见的组件就行,比如用广播。

    相关文章

      网友评论

      • 奋斗一生_2f40:我试了一下,时间缩短了,但是还是会闪黑一下
      • 足球的幸福茄子:进程是调起来了,感觉时间还是有点长。楼主有新的解决方案没?
        杰少想去流浪:启动一个空服务会很耗时?您试试提前启动呢?我在那之后并没有继续深入研究,所以没有新的解决方案,欢迎探讨!

      本文标题:android 预加载进程(页面跳转白屏或黑屏)

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