java.lang.IllegalMonitorStateException: l'objet n'est pas verrouillé par le thread avant de wait()?

Je suis en utilisant la boîte de dialogue de progression.j'ai besoin d'arrêter le thread lorsque l'utilisateur ferme la progressdialog .malheureusement, celui-ci donnant exception pls m'aider..

De l'intérieur de la classe

class UpdateThread extends Thread{

    public  void run() {
        while (true){
            count=adapter.getCount();

            try {
               mHandler.post(  new Runnable() {
                    public  void run() {
                        Log.i(TAG,count+"count");
                        progressDialog.setMessage(count + "Device  found");
                    }
                });
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Oncreate

 updateThread=new UpdateThread();

 progressDialog= new ProgressDialog(GroupListActivity.this);
 synchronized (this) {
     updateThread.start();
 }

ondismissal

   progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public  void onDismiss(DialogInterface dialog) {
            try {
                synchronized (this) {
                    updateThread.wait(300);
                }

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            Log.i(TAG,"Thread is stopped");
        }
    });
  • Exactement ce que vous essayez d'atteindre avec les serrures?
  • sa présentation exception.donc je lock
  • Je comprends que vous avez à utiliser synchronisé si vous appelez wait, mais je n'ai pas (a) pourquoi vous êtes aussi de la synchronisation sur l'appel de updateThread.start, ou (b) pourquoi vous utilisez wait pour commencer (puisque vous ne l'utilisez pas notify ou notifyAll). Je soupçonne que vous êtes à la synchronisation et à l'aide de wait où vous ne devriez pas l'être.
  • Ajout d'une réponse que les modifications de votre code pour accomplir ce qu'il semble que vous essayez de faire.
InformationsquelleAutor Asthme | 2014-10-27