Android短信数据库监听回调多次问题


在监听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缓存 起来。下次再调用 时,从缓存中判断是否已经做过相应的操作了。

以上的方式,能解决一些问题。但最重要的,还是要根据自己的业务来做。

如果大家都监听短信有更好的方式。可以留言,欢迎 一起交流。

最后,说一下为何要用这种试监听短信。因为,使用也可以广播监听短信,但大家也知道。目前,在中国很多所谓的安全软件很流氓,它们也会通过各种方式监听短信广播。而且,有时候,在它们监听到广播后,就把广播取消了,造成其它软件无法收到广播。

欢迎和朋友们一起交流。!!!

相关内容