我是学习java的新手。我一直在努力工作2天。我会生气的。请帮帮我
我希望当我的函数运行时,所有活动必须等到我的函数完成。
一个例子
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
webView2 = (WebView) findViewById(R.id.webView);
Log.v("htmlg","oncreate started");
main_command();
/*
*
* main_command(), When this command run application must wait in here.
*
* */
Log.v("htmlg", "oncreate finished");
}
public static int finished = 0;
public void main_command(){
/*
*
* There is some webview actions in here. it takes about 5 minutes.
*
* When webview operations are finished.
* I call javascript command javascript:window.HTMLOUT.ok();
* I want everything wait until webview operations are finished and javascript command runned.
*
* */
}
但我无法做到这一点。当main_command()运行时,Log.v()函数将立即运行。但是main_command()仍在运行,但尚未完成。当它完成一个javascript命令将调用android内的一个函数。然后流程将完成,应用程序可以继续工作。
现在,我告诉我的经历。
我试图在Asynctask中编写webview代码,但我无法在asynctask中使用webview。
我把webview放在rununithread()里面的asynctask中,我不能再做了。
我试图将main_command()放在CountdownTimer中但是" oncreate finished"在CountdownTimer完成之前运行的行。
现在我感到无助。我不太了解java或android编程。我是php程序员。我尝试做webview应用程序。我不太了解java结构。如果可以的话,你能写出正确的工作代码示例吗?因为我不了解所有的例子。我查看并阅读了所有可能有解决方案,但我无法理解。我需要你的帮助。
由于
答案 0 :(得分:0)
你不想阻止主线程,否则android系统会显示"应用程序没有响应"错误。而且您的用户很可能会选择杀死该应用。
据我所知,您希望通过javascript命令调用应用程序时恢复应用程序。这是你可以继续的方式:
创建一个函数postMainCommand()
。在此方法中,编写在javascript命令调用之后需要执行的所有内容。我的意思是:
Log.v("htmlg", "oncreate finished");
在网络工作完成后调用此方法。
直到您的工作正在进行中,您可以显示一个不可取消的进度对话框,其中包含一些文字,例如"请稍候......"。或者,如果您可以跟踪进度,可以继续更新消息:
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Please wait...");
dialog.setCancelable(false);
dialog.show();
不可取消,因为您不希望用户与其间的应用进行互动,对吗?
当您的网络视图作业结束时,请致电dialog.cancel();