如何简化java启动屏幕?
基本上,我在两个活动之间有一个可运行的切换。我在onCreate runnable中有一个计时器,在主活动中设置为0毫秒,它会立即切换到初始屏幕。启动屏幕只是一个imageview,然后使用类似的runnable在3000毫秒后立即切换回来 我的问题是,;我可以简化主活动的代码吗?如果我想立即加载SplashScreen.activity,我真的需要.postdayed吗 如果延迟不是必需的,我如何正确地消除它,以便应用程序立即加载splashscreen 主要活动:如何简化java启动屏幕?,java,android,android-activity,splash-screen,runnable,Java,Android,Android Activity,Splash Screen,Runnable,基本上,我在两个活动之间有一个可运行的切换。我在onCreate runnable中有一个计时器,在主活动中设置为0毫秒,它会立即切换到初始屏幕。启动屏幕只是一个imageview,然后使用类似的runnable在3000毫秒后立即切换回来 我的问题是,;我可以简化主活动的代码吗?如果我想立即加载SplashScreen.activity,我真的需要.postdayed吗 如果延迟不是必需的,我如何正确地消除它,以便应用程序立即加载splashscreen 主要活动: /*
/*
SPLASH SCREEN
*/
splashScreenRun = settings.getBoolean("splashScreenRun", splashScreenRun);
if (splashScreenRun == true) {
settings.edit().putBoolean("splashScreenRun", false).commit();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent splashIntent = new Intent(MainActivity.this, SplashActivity.class);
startActivity(splashIntent);
finish();
}
},0);
}
else {
settings.edit().putBoolean("splashScreenRun", true).commit();
}
//END
然后是飞溅屏幕:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//splash screen
new Handler().postDelayed(new Runnable(){
@Override
public void run(){
Intent splashEndIntent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(splashEndIntent);
finish();
}
},splashTimeout);
//end splash screen
首先,永远不要使用匿名处理程序。使用处理程序对象
Handler handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
startActivity(new
Intent(SplashActivity.this, MainActivity.class));
overridePendingTransition(R.anim.right_in, R.anim.right_out);
finish();
}};
handler.postDelayed(runnable, 3000);
在毁灭中
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacks(runnable);
}
如果用户直接从任务管理器关闭应用程序,这将防止应用程序崩溃
或
你应该使用
runOnUiThread(new Runnable() {
@Override
public void run() {
//Do your stuff here.
}
});
希望这能有所帮助。您可以使用onStart()来完成此操作,而不必使用postdayed。