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

现象:
第一次从一个进程的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,只要是看不见的组件就行,比如用广播。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,301评论 25 708
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 3,300评论 0 20
  • 中午去逛街,有两件衣服不知道该不该买,一件藏青色呢子短大衣,一件藏青色风衣,有质感,穿上很有型,现在自己的衣柜里...
    小米酒阅读 156评论 0 0
  • 动若闲鹤静如仙, 何用皮囊裹尘烟。 读尽人生万卷书, 出世方知应闭眼。 不糊涂,难上难。 独坐莲花对来年。 虚心容...
    曹焕甫阅读 288评论 0 4
  • 很久没有去学校,今天刚巧路过那里,心念一动,忽然很想去看一看。 来到校门口,环顾四周,感觉和以前不太一样了。路面重...
    心与物语阅读 437评论 9 10