解决方案 »

  1. 1.在适当的时候,防止弹出多个Dialog?这个应该是要防止多次请求,而不是将对话框设置为单例,
       例如弹出对话框是由点击某个按钮或其他组件的事件触发的,那就控制点击次数,
        点击一次后将对应的组件禁用,等弹出框关闭后才激活被禁用的组件;
    2.mDlgSignElectron=null 这个也不能保证对象一定会被回收,回收的过程比较复杂,
        不可能通过代码来控制,具体还要看虚拟机的实现;
      

  2. 给AvcSignElectronDialog类加一个clearInstance方法,里面执行mSingleton = null;
    然后在想释放的地方,调用AvcSignElectronDialog.clearInstance();应该可以解决问题
      

  3. 试用了一下这个方法,应该是可行的。
    public static synchronized void clearInstance() {  
        if (mSingleton != null) {
          mSingleton = null;
        }
    }
      


  4. 我意思是,你用的时候要getInstance,不用的时候要releaseInstance这样计数器就有增有减了。
      

  5. 试用了一下这个方法,应该是可行的。
    public static synchronized void clearInstance() {  
        if (mSingleton != null) {
          mSingleton = null;
        }
    }不计数有可能程序会崩溃
    尤其在多线程下,一个线程刚getInstance完,另一个就给clear了,有可能会崩溃还是别这么写了
      

  6. 就需要自己写一个释放的方法,在你用完后调用该方法,让 mDlgSignElectron=null 不就好了嘛。