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