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,只要是看不见的组件就行,比如用广播。

相关文章

网友评论

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

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

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