Android 如何使一项活动在一定时间内保持活动状态,然后再开始另一项活动?

Android 如何使一项活动在一定时间内保持活动状态,然后再开始另一项活动?,android,android-activity,Android,Android Activity,如何创建受限于时间的活动。我想当我启动我的应用程序时,会出现一个初始活动,仅持续几秒钟,以显示应用程序名称及其版本和一些其他信息,并在指定时间后启动应用程序。我做过这样的事情,但最初的活动有一个动画,当动画结束时,新的活动或应用程序开始。但是,现在我的初始活动没有动画,例如,我不知道如何使活动保持活动/活动10秒,当10秒结束时,另一个应用程序启动?使用处理程序等待(例如3秒)并继续: private static int SPLASH_TIME_OUT = 3000; new

如何创建受限于时间的活动。我想当我启动我的应用程序时,会出现一个初始活动,仅持续几秒钟,以显示应用程序名称及其版本和一些其他信息,并在指定时间后启动应用程序。我做过这样的事情,但最初的活动有一个动画,当动画结束时,新的活动或应用程序开始。但是,现在我的初始活动没有动画,例如,我不知道如何使活动保持活动/活动10秒,当10秒结束时,另一个应用程序启动?

使用处理程序等待(例如3秒)并继续:

    private static int SPLASH_TIME_OUT = 3000;

    new Handler().postDelayed(new Runnable() {

        /*
         * Showing splash screen with timer running. This is useful to showcase your app logo/company or something like that.
         */

        @Override
        public void run() {
            // This method will be executed once the timer is over
            // Start your app main activity
            Intent i = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(i);

            // close this activity
            finish();
        }
    }, SPLASH_TIME_OUT);
您可以使用计时器:

    private Timer timer;


    @Override
    protected void onResume (){
        super.onResume();       
        timer = new Timer();
        timer.schedule(new OpenActivityTask(), SOME_TIME_IN_MILLIS);            
    }

    @Override
    protected void  onPause (){
        super. onPause();
        timer.cancel();     
        timer = null;
    }

    private static class OpenActivityTask extends TimerTask {

        @Override
        public void run() {
            //TODO Go to new activity
        }
    }
如果您在到达延迟时间之前手动关闭活动,或者由于某种原因它转到后台,则会提供取消

另一个选项是使用并计划一次拍摄
pendingent
。这种方法的代码可能较短,并且允许安全地取消:

    PendingIntent pi;

    @Override
    protected void onResume (){
        super.onResume();       

        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Intent intent = new Intent(this, YourOtherActivity.class);
        pi = PendingIntent.getActivity(this, 0, intent, 0);

        alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + SOME_TIME_IN_MILLIS, pi);           
    }

    @Override
    protected void  onPause (){
        super. onPause();

        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pi);
    }