日期:2014-05-16 浏览次数:20532 次
1.注册监听
this.getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true, myContentObserver);
?
2.
/**
* 用来实现对通话记录表变化的监听 监听到变化的时候发送Message
*
* */
private ContentObserver myContentObserver = new ContentObserver(
new Handler() {
}) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
System.out.println("---------------监听到表变化!");
Message ms = new Message();
handler.dispatchMessage(ms);//发送消息给Handler
}
};
?
?3.
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {//处理消息
// if (willDo != null)
// {
// System.out.println("removeCallbacks一次!");
// this.removeCallbacks(willDo);//从队列中移除
//
// }
// this.postDelayed(willDo, 2000);//怎么理解???????2秒内如果接受到新的消息
System.out.println("外面一次!");
if (willDo != null && flag == true) {
this.post(willDo);
System.out.println("里面一次!");
flag = false;
Timer timer = new Timer();// 设置一个定时器,如果3秒后再将flag设置为true,才能继续监听改变
timer.schedule(new TimerTask() {
@Override
public void run() {
flag = true;
}
}, 3000);
}
}
};
?
4.
private Runnable willDo = new Runnable() {
public void run() {
initCallLogs();//对表变化所执行的一些操作
System.out.println("WillDo执行一次!");
}
};
?
?