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