如何在后台开始活动并在之后显示?

时间:2013-05-30 08:22:40

标签: android android-activity splash-screen

我有两个活动,一个是 SplashActivity,另一个是MainActivity,这是一个包含webview的活动。

我需要在显示启动画面时加载webview。所以我正在寻找一种在SplashActivity::onCreate();

中加载背景中的MainActivity的方法

如果直接调用intend,MainActivity会立即显示在前面,并且会停留在webview中。

我查了很多关于启动画面的解决方案,例如this 。但是,在启动时间到期之前,它们不会初始化MainActivity。

3 个答案:

答案 0 :(得分:14)

您可以先启动MainActivity并启动SplashActivity onCreate()中的MainActivity。在所需的持续时间之后,您可以关闭SplashActivity并再次出现MainActivity,这样就好像您已经从Splash启动了Main。

让我解释一下 -

MainActiviy中使用intent并使用SplashActivity而不是startActivity启动startActivityForResult,因为您不希望从SplashActivity传回结果{1}}至MainActivity

现在你在SplashActivity,启动一个线程并在线程中等待所需的持续时间,然后调用finish()以便SplashActivity关闭并且之前开始{{1}来到前台。

希望这有帮助。

答案 1 :(得分:6)

Android应用可以缓存网络数据。你可以利用这个优势。 (它对我有用)。 我做了什么:

  • 我在启动画面中创建了一个WebView。
  • 没有将其附加到用户界面
  • 请求主要活动中需要的网页。
  • 加载启动画面中的WebView后,启动另一个活动。

WebView将使用您在初始屏幕中创建的WebView的缓存。

答案 2 :(得分:-1)

我希望这应该完美地运作......

   ProgressDialog pd;   

   pd = ProgressDialog.show(YOUR_ACTIVITY.this,"Loading...", true, false);

            new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub

                    Intent intent = new Intent(YOUR_ACTIVITY.this,
                            NEXT_ACTIVITY.class);

                    startActivity(intent);
                    pd.dismiss();
                }
            }).start();

        }
    });