在監聽Android短信數據庫變化時。由於只能注冊content://sms/ 的observer。所以,在數據庫每次狀態變化的時候,都會多次回調onChange 方式。目前還未找到很好的方式,解決回調多次的問題。只能通過代碼邏輯來屏蔽這個問題。 目前,我使用的方式是通過時間來過濾兩次的回調。
long lastTimeofCall = 0L;
long lastTimeofUpdate = 0L;
long threshold_time = 10000;
if (lastTimeofCall - lastTimeofUpdate < threshold_time) {
lastTimeofUpdate = System.currentTimeMillis();
return;
}
這種方式 確實能夠屏蔽數據庫兩次的狀態更新。
其實,還有另一種試,就是數據庫改變一次,做一個自己的業務操作。比如:插入或刪除。再把這次操作的id緩存 起來。下次再調用 時,從緩存中判斷是否已經做過相應的操作了。
以上的方式,能解決一些問題。但最重要的,還是要根據自己的業務來做。
如果大家都監聽短信有更好的方式。可以留言,歡迎 一起交流。
最後,說一下為何要用這種試監聽短信。因為,使用也可以廣播監聽短信,但大家也知道。目前,在中國很多所謂的安全軟件很流氓,它們也會通過各種方式監聽短信廣播。而且,有時候,在它們監聽到廣播後,就把廣播取消了,造成其它軟件無法收到廣播。
歡迎和朋友們一起交流。!!!
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11