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