1

我創建了一個從CountDownTimer延伸的類,它有一個方法onFinish(),該方法在timer過期時調用。如何關閉所有打開的活動並從Java Class中打開一個新的活動

有6個活動,用戶可以在任何時候activity計時器到期,所以在CounterTimerFinish()方法調用,我需要表現出Alert Message給用戶,以及我需要用戶重定向到Login頁。

事情越來越令人困惑,因爲我不能在Normal Class中撥打Intent class,我也不能通過context,因爲用戶可以在任何活動中。

我寫了下面的代碼,但它不是幫忙。

我使用的情況下在這裏,但其對路過contextIntent

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

通話計時器在嚮導的開始給錯誤消息,在片段

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

檢查[這](http://stackoverflow.com/a/6330456/5296734)了,它可以幫助你。 –

+0

@ nick7291:謝謝,讓我試試這個 – Kirmani88

+0

[完成所有以前的活動]的可能重複(http://stackoverflow.com/questions/6330260/finish-all-previous-activities) – faranjit

回答

1

有兩個部分組成你的問題,首先是你如何清理Activity堆棧並在其上開始一個新的Activity,我想這將是你的情況下的LoginActivity。

要做到這一點,你需要的時候,你要開始它來設置你的LoginActivity意圖的標誌,

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

,第二部分是,你要能夠顯示後完成當前活動一個對話框給用戶。我假設你的Timer是一個服務類,它在後臺運行。告訴你當前活動的時間到了!是發送廣播消息。最好,LocalBroadcastManager可以幫助你。你可以有一個BaseActivity類,所有的6個活動中可以從中進行擴展,你可以註冊/註銷LocalBroadcastManager到/從BaseActivity類的活動(在onResume註冊和註銷)。在您註冊他們,你只需要實現和處理onReceive方法,您可以顯示一個對話框,並在完成當前操作後啓動LoginActivity