1

CountDownTimer에서 연장되는 클래스를 만들었습니다. timer이 만료 될 때 호출되는 onFinish() 메서드가 있습니다.열려있는 모든 활동을 닫고 Java 클래스에서 새 활동을 여는 방법

는 타이머가 만료 될 때 Finish() 메서드 호출은, 내가 Login 페이지로 사용자를 리디렉션 할 필요와 함께, 사용자에게 Alert Message를 표시해야 할 때 CounterTimer에서 그래서 6 개 활동, 사용자가 어떤 activity에있을 수 있습니다. 사용자가 어떤 활동이 될 수있는 내가 Normal ClassIntent class를 호출 할 수 없기 때문에, 혼란 점점

것, 나는 또한 context 전달할 수 없습니다.

다음 코드를 작성했지만 도움이되지 않습니다.

여기 컨텍스트를 사용하여, 그러나 그것에서, 마법사의 시작에 타이머를 호출 Intent

public class CounterClass extends CountDownTimer implements ITMServiceEvent { 

    @Override 
    public void onFinish() { 
     if(sql_code.equalsIgnoreCase("0")) { 
      String resultCode = command1.getString("result"); 
      context.startActivity(context.getApplicationContext(), MainActivity.class); 
      } 

context 전달에 오류 메시지를주는 오전 조각

CounterClass counterClass= new CounterClass(180000,1000); 
counterClass.setTextView(tvTimer); 
counterClass.start(); 
+1

체크 [this] (http://stackoverflow.com/a/6330456/5296734) 밖으로, 당신을 도울 수 있습니다. –

+0

@ nick7291 : 감사합니다. 시도해 보겠습니다. – Kirmani88

+0

[이전의 모든 활동 완료] (http://stackoverflow.com/questions/6330260/finish-all-previous-activities) – faranjit

답변

1

두 부분이 있습니다 귀하의 질문은, 첫째, 당신이 어떻게 활동 스택을 정리하고 그들 위에 새로운 활동을 시작, 당신의 경우 LoginActivity 것 같아요. 당신이 보여주는 한 후 현재 작업을 완료 할 수 있도록하려면,

는이 작업을 수행하려면, 당신은, 당신이 그것을 시작할 때 LoginActivity 의도의 깃발을 설정

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK); 

필요 그리고 두 번째 부분입니다 사용자에게 대화 상자. 귀하의 타이머는 백그라운드에서 실행되는 서비스 클래스라고 가정합니다. 현재 활동에 시간이 다되었다는 것을 알려주는 방법! 브로드 캐스트 메시지를 보내는 것입니다. 가급적이면 LocalBroadcastManager이 도움이 될 수 있습니다. 6 액티비티 모두를 확장 할 수있는 BaseActivity 클래스를 가질 수 있으며 클래스의 액티비티 (onResume에 등록하고 에 등록 해제)에 해당 액티비티에 LocalBroadcastManager을 등록/등록 취소 할 수 있습니다. 이들을 등록한 후에는 onReceive 메소드를 구현하고 처리해야하며 대화 상자를 표시하고 현재 완료 후 LoginActivity을 시작할 수 있습니다.

관련 문제