从其他onCreate方法启动一个活动

时间:2015-08-05 08:15:35

标签: java android android-activity oncreate

问题描述

我正在撰写Android应用程序,其中包含两项活动:MainActivitySplashActivity。当MainActivity启动时,加载UI需要一些时间,而且它还在后台进行一些工作。因此,为了不显示不完整的用户界面(白屏等),我决定从MainActivity方法开始onCreate()开始,然后在一段时间后关闭SplashActivity我假设在那时我的SplashActivity已经加载了。为此,我尝试了以下代码:

代码

MainActivity

在清单文件中,public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Intent intent = new Intent(LoginActivity.this, SetPassword.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); ......... } } 活动设置为LAUNCHER。该代码如下:

    显示
  1. MainActivity
  2. 当我关闭时MainActivity MainActivity出现在前面。
  3. 但我需要遵循以下行为

    1. SplashActivity从'背景'开始
    2. MainActivity来到前面并在一段时间后关闭自己
    3. `MainActivty'已经装好了。

5 个答案:

答案 0 :(得分:2)

您可以使用import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.util.Assert; @RepositoryRestResource(collectionResourceRel = "urls", path = "urls") public interface URLRepository extends MongoRepository<URL, String> { List<URL> findByHash(@Param("hash") String hash); } 。从AsyncTask开始,当加载了所有必要的数据后,启动SplashActivity。尝试这样的事情:

MainActivity

答案 1 :(得分:0)

您可以在MainActivity中启动对话框。它将显示在MainActivity前面,您可以在工作完成后关闭它。

见这里:Dialog

答案 2 :(得分:0)

您的任务可以通过在一个活动中使用片段或视图来解决。 在onCreate()方法的活动中,您可以显示SplashFragment。完成所有后台工作后,您可以将其替换为MainFragment。使用不同的视图(设置其可见性)可以实现相同的目的。

示例:

height

无论如何。如果要使用活动,则需要在SplashActivity中使用后台作业的监听器。您应该使用startActivityForResult()启动SplashActivity。完成工作后,您应该完成SplashActivity并继续在MainActivity中的onActivityResult()方法中进行处理。

答案 3 :(得分:0)

您可以先启动启动画面,然后导航到MainActivity,如下所示:

public class SplashScreen extends Activity {
    int timeout = 5000; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent i = new Intent(SplashScreen.this, MainActivity.class);
                    startActivity(i);
                    finish();
                }
        }, timeout);
    }

}

答案 4 :(得分:0)

开始你的飞溅 NO_HISTORY意图标记或在清单中为你的splah活动定义android:noHistory