等待webview中的javascript完成以继续Android Java

等待webview中的javascript完成以继续Android Java,java,android,multithreading,webview,countdowntimer,Java,Android,Multithreading,Webview,Countdowntimer,我是学java的新手。我已经花了两天的时间来研究如何做到这一点。我会发疯的。请帮帮我 我希望当我的函数运行时,所有活动都必须等到函数完成 一个例子 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); getSupportActionBar().hide(); setContentView(R.layout.activity_main); webView2=(WebView)findViewById

我是学java的新手。我已经花了两天的时间来研究如何做到这一点。我会发疯的。请帮帮我

我希望当我的函数运行时,所有活动都必须等到函数完成

一个例子

创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
webView2=(WebView)findViewById(R.id.WebView);
Log.v(“htmlg”,“oncreate已启动”);
main_命令();
/*
*
*main_command(),当此命令运行时,应用程序必须在此处等待。
*
* */
Log.v(“htmlg”,“oncreate finished”);
}
公共静态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放在asynctask中的RunUnitThread()中,我不能再这样做了

  • 我试图将main_command()放在倒计时内,但“oncreate finished”行在倒计时结束前运行

现在我感到无助。我不太懂java或android编程。我是php程序员。我尝试做webview应用程序。我不太懂java结构。如果你能做到,你能写出正确的示例工作代码吗?因为我不理解所有的例子。我看了看所有的东西,也许有解决办法,但我无法理解。我需要你的帮助


谢谢

您不想阻止主线程,否则android系统将显示“应用程序未响应”错误。你的用户很可能会选择关闭这个应用程序

据我所知,当您通过javascript命令调用应用程序时,您希望应用程序恢复。这是您可以继续进行的方式:

  • 制作一个函数
    postMainCommand()
    。在这个方法中,编写javascript命令调用之后需要执行的所有内容。我指的是像:

    Log.v("htmlg", "oncreate finished");
    
    在web工作完成后调用此方法

  • 在作业进行之前,您可以显示一个不可取消的进度对话框,其中包含一些文本,如“请稍候…”。或者,如果可以跟踪进度,则可以不断更新消息:

    ProgressDialog dialog = new ProgressDialog(this);
    dialog.setMessage("Please wait...");
    dialog.setCancelable(false);
    dialog.show();
    
    不可取消,因为您不希望用户在两者之间与应用程序交互,对吗

  • webview作业结束后,调用
    dialog.cancel()


  • 您不希望阻止主线程,否则android系统将显示“应用程序未响应”错误。你的用户很可能会选择关闭这个应用程序

    据我所知,当您通过javascript命令调用应用程序时,您希望应用程序恢复。这是您可以继续进行的方式:

  • 制作一个函数
    postMainCommand()
    。在这个方法中,编写javascript命令调用之后需要执行的所有内容。我指的是像:

    Log.v("htmlg", "oncreate finished");
    
    在web工作完成后调用此方法

  • 在作业进行之前,您可以显示一个不可取消的进度对话框,其中包含一些文本,如“请稍候…”。或者,如果可以跟踪进度,则可以不断更新消息:

    ProgressDialog dialog = new ProgressDialog(this);
    dialog.setMessage("Please wait...");
    dialog.setCancelable(false);
    dialog.show();
    
    不可取消,因为您不希望用户在两者之间与应用程序交互,对吗

  • webview作业结束后,调用
    dialog.cancel()


  • 是否要停止ui或代码运行?是否要停止ui或代码运行?