日期:2014-05-16 浏览次数:20416 次
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执行一次!"); } };?
?