2013-08-27 61 views
0

我有一個應用程序與幾個活動,我有一個計時器,我開始在第一個活動中提出。問題是這樣的:跨應用程序活動的Android計時器通知

當我現在的活動可能與我啓動計時器的活動不同時,如何在計時器關閉時獲得對當前活動的引用。

我實際上想要的是讓一個計時器遍歷我所有的活動,當它到期時顯示一個警告對話框並做一些事情。但由於Android的工作方式,這似乎是不可能的。有沒有人有另一種選擇?

我已經嘗試過:

  • 使用異步任務如果主UI線程不會創建它來訪問UI線程,doesn'nt工作。
  • 不能使用處理,我的定時器是另一個類

我有什麼其他選擇?

編輯:

  • 我不能改變任何活動代碼,定時器應脫鉤足夠當有人塞在項目中發揮作用。
  • 從計時器工作線程獲取當前活動的一個實例應該可以工作,因爲它可以讓我在ui線程中運行一些東西。
+1

嗯,所以你在圖書館項目中這樣做?如果您無法訪問活動,則顯示對話框非常困難。這就是通知的目的,真的。 – ajpolt

+0

是的確是它的一個庫,我可以觸發通知並以編程方式打開它嗎?如果可以做到,怎麼樣? –

回答

0

實現您的計時器爲singleton

然後,實施observer模式:

創建界面(也可以叫做AlertListener)由要提醒每個活動實現的。這個接口應該有一個方法,像onTimerExpired()。這個方法應該在定時器到期時做任何需要做的事情。

在您的計時器類中,還維護對當前AlertListener和名爲類似「setCurrentActivity(AlertListener currentActivity)」的方法的引用。

在onResume或每個活動的其他方法中,調用MyTimer.setCurrentActivity(this)。

定時器關閉時,調用currentActivity.onTimerExpired()。

相關問題