现在在做一个Android应用,我想用一个定时器Timer对象不断调用webservice,但是想在Activity切换的时候,即触发onPause的时候停止掉这个定时器对象,在onRestart的时候再开启。我的方法是这样的
@Override public void onPause() { try { timer.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block } Log.i("AAAA", "onPause"); super.onPause(); } @Override public void onRestart() { Log.i("AAAA", "onRestart"); timer.notify(); super.onRestart(); }
因为我需要保留定时器请求方法的里面一些数据的状态,所以无法使用cancel()直接注销掉这个定时器再重新新建这种方法。而在上面的方法中,我切换Activity的时候会出现IllegalMonitorStateException异常,网上查了一下说是没有获得对象锁的关系。刚接触Java,对于Java中这个对象锁没什么概念。我的timer对象是在onCreate事件里写的,我想知道我该如何获得这个对象锁,或者有没有其他办法可以实现我的需求,谢谢。