当前位置: 首页 > 知识库问答 >
问题:

如何在SplashActivity中预加载MainActivity,以便在启动MainActivity时不会出现延迟?

阎晗日
2023-03-14

我有一个工作飞溅

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

我想添加一些按钮,比如共享更多等等

我是通过删除处理程序和SPLASH_DISPLAY_LENGTH,向xml添加按钮并像处理任何其他活动一样处理点击,并设置一个开始按钮来启动主活动,即主活动>在几秒钟内开始(加载1,2秒后)。

但是我想在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;
    }

}
}

共有2个答案

梁英喆
2023-03-14

如果其他人有同样的问题,比如当我们从SplashActivity加载Mainactivity时,我们会得到一个黑屏,持续一两秒钟,这是Mainactivity的加载时间,看起来真的不太好。

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

这样,当应用程序启动时,活动就会加载,并且从启动片段到主片段的事务不需要时间:)

希望它能帮助别人。

宗冷勋
2023-03-14

您可以尝试通过在onCLick中放置一个处理程序来增加的加载时间延迟。

 类似资料:
  • 如何在活动启动上显示“滑动菜单”?我正在使用导航抽屉显示幻灯片菜单如下代码 `public class MainActivity extends Base_Activity{private DrawerLayout MDrawerLayout;public static ListView MDrawerList;private ActionBarDrawerToggle MDrawerToggle

  • *更新:我已经通过删除空指针解决了这些问题。我不知道有任何错误,因为我没有检查,也不知道如何打开日志错误,这就是为什么我不知道这种类型的问题曾经问过。顺便说一下,我是一个新的android开发者。

  • 我找到了一个很好的QRcode/条形码识别代码——它工作得很好,但是!它不停地工作。检测到的代码以条形码文本显示,但方法/proces/camera(initialiseDetectorsAndSources())仍在工作。我尝试了一些方法来阻止它,并找到了那个摄像源。release()在某种程度上起作用了:相机停止了,但我不确定探测器进程是否仍在后台某处运行?。然后,我添加了一个按钮,再次启动i

  • 在GitHub的一个简单应用程序项目中,我只有两个自定义Java文件: MainActivity.java包含与蓝牙和UI相关的源代码 DeviceListAdapter.java包含和,用于在中显示蓝牙设备 MainActivity.java包含一个方法,当用户点击中的蓝牙设备时,该方法将被调用: 我的问题: 如何从s方法调用方法? 我一直在两个Java文件之间移动类声明,并尝试将其放入自己的文

  • 问题内容: 我已经用Java编写了Thrift服务器来利用特定的Java包/库,但是我不是Java程序员。 问题是; 我看到对服务器的第一个RPC调用超时。Subsequest请求的执行没有任何问题,它仅影响以某些(但必不可少)语言编写的客户端。 我当前的想法是服务器在响应上超时,因为在第一次调用时,服务器必须加载请求所需的所有库。一些Thrift客户端实现必须比其他实现更好地处理超时,这可能会使