2010-11-06 52 views
1

我正在研究一種類似於秒錶的程序,該程序通知用戶不同的事情。他們需要能夠在等待通知的同時使用其他應用程序。通知將以文字轉語音。如果UI屏幕打開,它需要看看剩下多少時間,並能夠暫停計時器。使用服務和BroadcastReceiver停止觀看應用程序

我正在考慮爲定時器和通知使用服務。該服務將通過intent和BroadcastReceiver更新UI。這意味着我必須每秒發送一次廣播。

有沒有更好的方法來做到這一點?

回答

4

有沒有更好的方法來做到這一點?

第二個是第二個是第二個。在應用程序的一個組件中,時間不會比另一個時間流動得更快。因此,您不需要「每秒發送一次廣播」。另外,將內存中的服務保留在無所事事,但計時的情況下會浪費CPU和RAM,這種情況會導致用戶在Android開發者身上散發褻瀆語言,同時還會觸及他們最喜歡的任務殺手。

使用AlarmManagersend an ordered broadcast倒計時計劃結束以處理您的Notification(並且可選地,在您的活動中直接執行某項操作)。還將倒計時結束時間存儲在持久性存儲區(數據庫,平面文件等)中,並且該活動可以在屏幕上返回倒計時時使用該時間。如果用戶暫停倒計時,請取消未完成的鬧鐘。如果用戶設置/重新啓用倒計時,請設置鬧鐘。

+0

謝謝,這是我所需要的。 – bryan 2010-11-07 02:33:20

+0

非常感謝解釋和鏈接到博客文章。在那裏提到,展示這個概念的示例代碼可能會在某個時候發佈到您的GitHub倉庫。 (谷歌集團提到的似乎不再活躍。)想知道我可以在哪裏(和如果)得到示例代碼,以更好地理解這些如何融合在一起。 – aLearner 2013-08-08 13:22:43

+0

@aLearner:現在就去:https://github.com/commonsguy/cw-omnibus/tree/master/Notifications/Ordered – CommonsWare 2013-08-08 13:39:23