Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何简化java启动屏幕?_Java_Android_Android Activity_Splash Screen_Runnable - Fatal编程技术网

如何简化java启动屏幕?

如何简化java启动屏幕?,java,android,android-activity,splash-screen,runnable,Java,Android,Android Activity,Splash Screen,Runnable,基本上,我在两个活动之间有一个可运行的切换。我在onCreate runnable中有一个计时器,在主活动中设置为0毫秒,它会立即切换到初始屏幕。启动屏幕只是一个imageview,然后使用类似的runnable在3000毫秒后立即切换回来 我的问题是,;我可以简化主活动的代码吗?如果我想立即加载SplashScreen.activity,我真的需要.postdayed吗 如果延迟不是必需的,我如何正确地消除它,以便应用程序立即加载splashscreen 主要活动: /*

基本上,我在两个活动之间有一个可运行的切换。我在onCreate runnable中有一个计时器,在主活动中设置为0毫秒,它会立即切换到初始屏幕。启动屏幕只是一个imageview,然后使用类似的runnable在3000毫秒后立即切换回来

我的问题是,;我可以简化主活动的代码吗?如果我想立即加载SplashScreen.activity,我真的需要.postdayed吗

如果延迟不是必需的,我如何正确地消除它,以便应用程序立即加载splashscreen

主要活动:

        /*
        SPLASH SCREEN
        */

        splashScreenRun = settings.getBoolean("splashScreenRun", splashScreenRun);

        if (splashScreenRun == true) {

            settings.edit().putBoolean("splashScreenRun", false).commit();

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {

                    Intent splashIntent = new Intent(MainActivity.this, SplashActivity.class);
                    startActivity(splashIntent);
                    finish();

                }

            },0);

        }
        else {

            settings.edit().putBoolean("splashScreenRun", true).commit();

        }

        //END
然后是飞溅屏幕:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        //splash screen
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run(){

                Intent splashEndIntent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(splashEndIntent);
                finish();

            }

        },splashTimeout);
        //end splash screen

首先,永远不要使用匿名处理程序。使用处理程序对象

Handler handler = new Handler();
   runnable = new Runnable() {
   @Override
   public void run() {    
       startActivity(new 
       Intent(SplashActivity.this, MainActivity.class));                            
       overridePendingTransition(R.anim.right_in, R.anim.right_out);                                        
       finish();                             
         }};
    handler.postDelayed(runnable, 3000);
在毁灭中

@Override
protected void onDestroy() {
    super.onDestroy();
    handler.removeCallbacks(runnable);
}
如果用户直接从任务管理器关闭应用程序,这将防止应用程序崩溃

你应该使用

runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                    //Do your stuff here.
                    }
                });
希望这能有所帮助。

您可以使用onStart()来完成此操作,而不必使用postdayed。