启动一个服务后,会实例化OPT类,并调用方法A,
在a方法中会执行一个等待:
synchronized (OPT.this) {
try {
wait(5分钟);
} catch (InterruptedException e) {
....
}
}在等待时,我强制关闭服务后,再启动,会在调用OPT的a方法时停住,因为OPT没有notify现在我把OPT写成了单例模式,启动服务时通过OPT.getInstance()获得实例
关闭服务时在onDestroy里做了notify:
if (opt == null) {
OPT.getInstance().notifyAll();
}else{
opt.notifyAll();
}但是这样没有效果,OPT类没有被notify掉,在下次启动服务时还是会停在调用a方式那儿,直到时间结束;请问我应该怎么做才能在服务关闭时notify掉OPT类?????

解决方案 »

  1.   

    你这里的强制关闭服务是什么意思?杀死process?
      

  2.   

    这个,你是在主线程中wait(5分钟);第一次就会ANR吧,你可以等一回看看是不是这样
      

  3.   

    我没有在主线程中wait,而且时间也不一定是5分钟.
      

  4.   

    比较一下启动和消毁时调用OPT.getInstance()得到的是不是同一个对象
      

  5.   

    首先要意识到一个问题:ondestory并不会立即关闭线程和清空所有资源(如果需要强制关闭可以到 设置--管理应用程序--app--强行停止)
    请注意你在主线程notifyall, 子线程并没有关闭,而是被唤醒继续参与竞争,也就造成了服务关闭时线程还在运行的原因
      

  6.   

    线程是从属于进程的吧,对于android来说,就是每个程序运行在一个jvm进程里
    当进程被杀死时,线程肯定都玩完了