Android DialogFragment不';t停止主线程执行
我正试图阻止codecan显示的DialogFragment之后的代码,但更精确地说,它不起作用。问题是,当我调用notifiAll时,所有完成的都没有停止等待,我不明白为什么。。有人能告诉我我的秘密吗。谢谢大家原谅我的英语 下面是代码:Android DialogFragment不';t停止主线程执行,android,Android,我正试图阻止codecan显示的DialogFragment之后的代码,但更精确地说,它不起作用。问题是,当我调用notifiAll时,所有完成的都没有停止等待,我不明白为什么。。有人能告诉我我的秘密吗。谢谢大家原谅我的英语 下面是代码: ModifyDialog modifyDialog=(ModifyDialog)ModifyDialog.CreateNewInstace(); Thread done=null; modifyDialog.
ModifyDialog modifyDialog=(ModifyDialog)ModifyDialog.CreateNewInstace();
Thread done=null;
modifyDialog.SetListener(new ModifyDialog.NoticeDialogListener() {
@Override
public void onDialogPositiveButton(DialogInterface dialogFragment) {
synchronized (this) {
notifyAll();
}
}
@Override
public void onDialogNegativeButton(DialogInterface dialogFragment) {
synchronized (this) {
notifyAll();
}
}
});
modifyDialog.show(
getActivity().getSupportFragmentManager(),"selectmode"
);
final Button MODIFICA=(Button)v;
done=new Thread(){
public void start(){
synchronized (this) {
try {
super.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("Thread state ","notificated");
if (MODIFICA.getText().equals("MODIFICA")) {
MODIFICA.setText("Salva");
MOD = true;
setModificatedElement();
} else {
MODIFICA.setText("MODIFICA");
MOD = false;
SaveChanges();
setModificatedElement();
}
}
}
};
在不同的对象上调用notifyAll()
和wait()
(内部类的实例,this
始终引用最内部类的实例)。解决方案:(1) 使用
modifyDialog
(必须是最终版本):modifyDialog.wait()
,modifyDialog.notifyAll()
(2) 使用DialogFragment(或您正在处理的任何外部类)实例:
DialogFragment.this.wait()
,DialogFragment.this.notifyAll()
(3) 声明并设置一个新的
private final Object sync=new Object()
并使用sync.wait()
和sync.notifyAll()
在不同对象上调用notifyAll()
和wait()
(内部类的实例,此
始终指最内部类的实例)。解决方案:(1) 使用
modifyDialog
(必须是最终版本):modifyDialog.wait()
,modifyDialog.notifyAll()
(2) 使用DialogFragment(或您正在处理的任何外部类)实例:
DialogFragment.this.wait()
,DialogFragment.this.notifyAll()
(3) 声明并设置一个新的
private final Object sync=new Object()
并使用sync.wait()
和sync.notifyAll()