【问题标题】:How to Pre-load MainActivity in SplashActivity so there would be no delay when launching MainActivity?如何在 SplashActivity 中预加载 MainActivity,以便在启动 MainActivity 时不会延迟?
【发布时间】:2016-01-28 07:07:04
【问题描述】:

我有一个工作飞溅

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);
}
}

我想添加几个按钮,例如sharemore

我通过删除处理程序和SPLASH_DISPLAY_LENGTH 来做到这一点,并向 xml 添加按钮并像处理任何其他活动一样处理对它们的点击,并设置一个Start 按钮来启动MainActivity@ 987654327@ 几秒钟后启动(加载 1、2 秒后)。

但是我想处理MainActivitySplashActivity中的加载时间

我该怎么做?

这是添加按钮后的示例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;
    }

}
}

【问题讨论】:

  • 即使你发布了一个简短的问题,你想要什么仍然不清楚..
  • @Brendon 请再次检查它是否有意义或再次编辑它
  • 如果您使用闪屏,为什么要在其中添加一些按钮。如果用户想要点击某个按钮但没有足够的时间会发生什么,因为MainActivity 在 2 秒后加载???
  • @DanhDC 请检查代码的第二部分,我将删除时间,主要活动将在按钮单击时开始,我只希望在按下 button4 后立即开始主要活动,即它加载用户与启动画面交互时的背景
  • 你是否检查了加载MainActivity所用的时间。如果有很多从服务器获取的数据,你可以在MainSplash 中获取它并把它放到MainActivity 使用Intent.putExtra

标签: java android splash-screen


【解决方案1】:

您可以尝试通过在onCLick 中添加handler 来延迟MainActivity 的加载时间

【讨论】:

  • 请再次阅读我的问题,尤其是粗体部分,我想减少加载时间
  • 如果启动了activity,它将始终对用户可见,如果你想要一些后台工作,你可以尝试使用 asynchtask,在按钮onclickpostExecute 中你可以开始mainActivity.
【解决方案2】:

如果其他人遇到同样的问题,比如当我们从 SplashActivity 加载 Mainactivity 时,我们会出现一两秒钟的黑屏,这是 MainActivity 的加载时间,它看起来真的不像不错。

为了让它消失,我只是添加了一个 Fragment 用于启动屏幕而不是 SplashActivity 和另一个用于主界面的片段。

这种方式 Activity 在应用启动时加载,并且从启动片段到主片段的事务不需要时间:)

希望它可以帮助某人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多