7

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

显示启动画面时,我需要加载 webview。所以我正在寻找一种在后台加载 MainActivity 的方法SplashActivity::onCreate()

如果直接调用intent,则立即将MainActivity拉到最前面,以及卡在webview中。

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

4

3 回答 3

15

您可以启动第一个并MainActivity启动SplashActivity. 在所需的持续时间之后,您可以关闭并重新出现,这样看起来就好像您已经从 Splash 启动了 Main。onCreate()MainActivitySplashActivityMainActivity

让我解释一下——

在您MainActiviy使用 anintent并开始SplashActivity使用startActivity而不是startActivityForResult因为您不想将结果从SplashActivityto传回MainActivity

现在您在 中SplashActivity,启动一个线程并在线程中等待所需的持续时间,然后调用finish()以便SplashActivity关闭并且先前启动的线程MainActivity进入前台。

希望这可以帮助。

于 2013-05-30T08:45:21.597 回答
6

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

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

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

于 2013-05-30T08:29:14.413 回答
-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();

        }
    });
于 2013-06-18T13:35:31.157 回答