综合了许多splash的写法,也看过有的splash写法会出现一些空白页等问题。在此处给大家贴一下我的这个demo中的splash页,有问题大家可以留言沟通,希望能给大家带来 帮助。
项目地址:https://github.com/beibeiMary/NewsApplication-Demo.git
项目片段
首先创建一个handler类
public class Splashhandler implements Runnable{
Context context;
public Splashhandler(Context context){
this.context = context;
}
@Override
public void run() {
Intent intent = new Intent(context, MainActivity.class);
context.startActivity(intent);
}
/**
* 创建一个跳转页面的方法
*/
}
再写SplashActivity类
public class SplashActivity extends AppCompatActivity {
Splashhandler splashhandler;
Handler x;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
showSplash();
}
/**
* 创建一个handler
* 最好不要在oncreate调用splashhandler,oncreate在activity的生命只执行一次
*/
public void showSplash() {
x = new Handler();
splashhandler = new Splashhandler(SplashActivity.this);
}
/**
* 如下两个方法只是想让线程销毁掉
*/
@Override
protected void onPause() {
super.onPause();
if(x!=null&&splashhandler!=null){
x.removeCallbacks(splashhandler);
}
}
@Override
protected void onResume() {
super.onResume();
if(x!=null&&splashhandler!=null){
x.postDelayed( splashhandler, 3000);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
finish();
}
}
写两个方法,主要是为了让线程销毁掉,场景如下:
1.用户打开app的一瞬间,想上厕所,关掉app(app就真的关闭了)~~(如果写在oncreate中的话,app在几秒之后还要自己启动,主要是因为页面只是finish掉了,但是并没有释放。)
2.用户打开app的一瞬间,忽然幺幺零给他打了一个电话,这时候app停止了,电话结束后,页面又恢复如初了。