如何让活动活动一段时间,然后另一个活动开始?

时间:2014-05-09 11:47:47

标签: android android-activity

如何创建受时间限制的活动。我希望当我启动我的应用程序时,会出现一个初始活动,只持续几秒钟,只显示应用程序名称及其版本和其他一些信息,并在指定时间后启动应用程序。我已经完成了这样的事情,但初始活动有一个动画,当动画结束时,新活动或应用程序启动。但是,现在我的初始活动没有动画,我不知道如何将活动保持活动/活动10秒,例如,当10秒结束时,另一个应用程序启动?

2 个答案:

答案 0 :(得分:1)

使用处理程序等待(例如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);

答案 1 :(得分:1)

您可以使用计时器:

    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
        }
    }

如果您在达到延迟时间之前手动关闭活动,或者由于某种原因它转到后台,它会提供取消。

另一种选择是使用AlarmManager并安排一次性PendingIntent。这种方法在代码中可能更短,也可以安全取消:

    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);
    }