2014-05-09 2 views
0

시간 제한된 활동을 작성하는 방법. 내 앱을 실행하면 초기 활동이 나타나고 앱 이름과 버전 및 기타 정보를 표시하는 데 몇 초 밖에 걸리지 않고 지정된 시간이 지나면 앱이 시작됩니다. 그런 일을했지만 초기 활동에는 애니메이션이 있었고 애니메이션이 끝나면 새로운 활동이나 앱이 시작됩니다. 하지만 이제는 초기 활동에 애니메이션이 없으므로 예를 들어 10 초 동안 활동을 활성/활성 상태로 유지하는 방법을 모르며 10 초가 끝나면 다른 앱이 시작됩니까?일정 시간 동안 활동을 활성화시키고 다른 활동을 시작한 후 어떻게 만드나요?

답변

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

당신은 타이머를 사용할 수 있습니다

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); 
    } 
관련 문제