Java 如何在SplashActivity中预加载MainActivity,以便在启动MainActivity时不会出现延迟?
我有一个工作飞溅Java 如何在SplashActivity中预加载MainActivity,以便在启动MainActivity时不会出现延迟?,java,android,splash-screen,Java,Android,Splash Screen,我有一个工作飞溅 public class MainSplash extends AppCompatActivity { private final int SPLASH_DISPLAY_LENGTH = 1000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash);
public class MainSplash extends AppCompatActivity {
private final int SPLASH_DISPLAY_LENGTH = 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(MainSplash.this, MainMenu.class);
MainSplash.this.startActivity(mainIntent);
MainSplash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
我想添加一些按钮,如共享
,更多
等
要做到这一点,我需要删除handler和SPLASH\u DISPLAY\u LENGTH
,将按钮添加到xml中,并像处理任何其他活动一样处理对它们的单击,然后设置Start
按钮以启动MainActivity
,在几秒钟内(加载1、2秒后)启动MainActivity
。
但是我想在SplashActivity
中处理MainActivity
的加载时间
我该怎么做
下面是添加按钮后的示例SplashActivity
public class MainSplash extends AppCompatActivity implements View.OnClickListener {
//private final int SPLASH_DISPLAY_LENGTH = 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Button btn1 = (Button) findViewById(R.id.button);
Button btn2 = (Button) findViewById(R.id.button2);
Button btn3 = (Button) findViewById(R.id.button3);
Button btn4 = (Button) findViewById(R.id.button4);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button4:
Intent mainIntent = new Intent(this,MainMenu.class);
startActivity(mainIntent);
finish();
break;
}
}
}
您可以尝试在
MainActivity
的加载时间中添加延迟,方法是在onCLick
中放置处理程序
,如果其他人有同样的问题,例如当我们从SplashActivity
加载MainActivity时,我们会在一两秒钟内出现黑屏,这是main活动
的加载时间,看起来确实不太好
为了让它消失,我只为启动屏幕添加了一个片段
,而不是SplashActivity
,并为主界面添加了另一个片段
这样,当应用程序启动so并且事务从初始片段到主片段不花费时间时,活动就会加载:)
希望它能帮助别人 你想要什么还不清楚,即使你发布了一个简短的问题。@Brendon请再次检查它,如果它有意义,或者我会再次编辑它。如果你使用启动屏幕,为什么你想在这里添加一些按钮。如果用户想要点击某个按钮但时间不够,会发生什么情况,因为MainActivity
在2秒后加载???@DanhDC请检查代码的第二部分,我将删除时间,主要活动将在点击按钮时开始,我只希望在按下按钮4
后立即开始主要活动,也就是说,当用户与Splash交互时,它在后台加载。您是否检查加载MainActivity
的时间。如果从服务器获取了大量数据,您可以在mainplash
中获取数据,并将其放入MainActivity
使用Intent.putExtra
。请再次阅读我的问题,特别是粗体部分,我想减少加载时间如果启动活动
,用户将始终可以看到它,如果您需要一些背景工作,您可以尝试使用asynchtask,单击按钮onclick
,然后在postExecute
中启动mainActivity
。