在我的应用程序中,我创建了一个自定义的对话框,它显示在webview和普通的android应用程序中,并且我在显示对话框时做了一些后台操作,当我调用mydialog函数它显示我的自定义对话框,它也返回一些值,它是完美的工作,当我使用webview + javainterface,但它不适用于普通的应用程序,流程是Android:UI线程被阻止
首先我会得到我的对话,做一些过程(这里主线程将等待,对话框需要显示,)然后我将返回字符串,问题是对话框不显示时,我调用此函数,而不是对话框将显示后我的后台进程完成。当您在mydialog()
进入块你获得this
的锁
String sample=mydialog();
public String mydialog() {
String mystring = null;
try {
myactivity.this.runOnUiThread(ShowDialog);
while (customizeddialog.Getvalue() == null) {
}
mystring = customizeddialog.Getvalue();
customizeddialog.Setvalue(null);
} catch (Exception e) {
return mystring;
}
private Runnable ShowDialog = new Runnable() {
public void run() {
try {
customizeddialog m_dialog = new customizeddialog(myactivity.this);
m_dialog.setCancelable(false);
m_dialog.show();
} catch (Exception e) {
}
}
};
你见过代码是否曾经退出while循环?你可以把一些'Log.d(“DIALOG”,“代码已达到点x”);在代码中的语句来看看发生了什么?我会说使用'while'循环并不是一个好主意 - 你最好使用类似'Handler'的东西,一旦对话准备好就可以发送消息。 – 2013-03-06 13:48:56
@AndrewWyld,我尝试了所有方法,没有什么wokrs所以finallly我来,而德路,但它wokrks细跟的WebView,Browser.addJavascriptInterface(新MyClass的(这一点), \t \t \t“AndroidFunction”);,然后我打电话mydialog在javascript,它显示我的对话框,并返回值为javascript – 2013-03-06 13:55:06