重定向页面前的延迟时间

3
有一个链接,它会在5秒钟内重定向到另一页,如何在重定向之前进行延迟?以下是一个示例链接:http://s.spynetstation.com/m/Logistics/Logistics%20-%20Medical%20History%20NHSDL09,%202007/05%20Logistics%20-%20Safe%20On%20My%20Side.mp3代码:
public void ShowTrack(String smetaout,String stitleout){
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle(stitleout);

    WebView wv = new WebView(this);

    wv.setWebViewClient(new WebViewClient() {

        @Override
           public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
             Log.d("My Webview", "shouldOverrideUrlLoading"+urlNewString);
               if (!loadingFinished) {
                  redirect = true;
               }

           loadingFinished = false;
           view.loadUrl(urlNewString);
           Log.d("My Webview", urlNewString);
           return false;
           }

           public void onPageStarted(WebView view, String url) {
               Log.d("My Webview", "onPageStarted"+url);
                loadingFinished = false;

            }

           @Override
           public void onPageFinished(WebView view, String url) {
               if(!redirect){
                  loadingFinished = true;
               }

               if(loadingFinished && !redirect){

               } else{
                  redirect = false; 
               }
               Log.d("My Webview", "onPageFinished"+url);
            }

    });
    wv.loadUrl(smetaout);
    alert.setView(wv);
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
        }
    });
    alert.show();
}
2个回答

1

试试这个:

public void ShowTrack(String smetaout,String stitleout){
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle(stitleout);

    WebView wv = new WebView(this);

    // Progress dialog starts
    ProgressDialog progressDialog = ProgressDialog.show(YourActivity.this, "", "Loading... ",true ,true);

    wv.setWebViewClient(new WebViewClient() {

       @Override
       public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
           Log.d("My Webview", "shouldOverrideUrlLoading"+urlNewString);
           if (!loadingFinished) {
               redirect = true;
           }

           loadingFinished = false;
           view.loadUrl(urlNewString);
           Log.d("My Webview", urlNewString);
           return false;
       }

       public void onPageStarted(WebView view, String url) {
           Log.d("My Webview", "onPageStarted"+url);
           loadingFinished = false;

       }

       @Override
       public void onPageFinished(WebView view, String url) {

           final Handler handler = new Handler();
           handler.postDelayed(new Runnable() {
               @Override
               public void run() {
                   // Do something after 5s = 5000ms
                   progressDialog.dismiss();
               }
           }, 5000);

           if(!redirect){
              loadingFinished = true;
           }

           if(loadingFinished && !redirect){

           } else{
              redirect = false; 
           }
           Log.d("My Webview", "onPageFinished"+url);
       }

    });
    wv.loadUrl(smetaout);
    alert.setView(wv);
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
        }
    });
    alert.show();
}

我希望这就是你想要的。

很遗憾,目前的情况是这样的:页面被请求后立即处理到完成线,但由于页面为空白,所以我需要让页面请求等待5秒钟,然后进行重定向,加载并返回到该页面。如何实现这一点呢? - madcrinkle

1
.loadUrl之前插入任何延迟(计时器、异步等)。例如:
new CountDownTimer( 5000, 5000)
 {
   public void onTick( long millisUntilFinished) {}
   public void onFinish()
    {
      view.loadUrl(urlNewString);
    }
 }.start();                  

很不幸,现在只能得到这么少的信息:页面被请求后立即完成了处理,因为页面是空白的,所以我需要让页面等待5秒钟再进行重定向,然后再加载并返回到这个页面。如何实现这一点? - madcrinkle
@BatuhanC的ProgressDialog解决方案怎么样? - Tapa Save
他只是因为某些原因跳过了值日志输出,但只在onPageFinish中出现。 - madcrinkle
抱歉,在页面重定向时添加了setJavaScriptEnabled(true);,页面似乎已加载,但由于某种原因无法看到播放器本身来运行轨迹。 - madcrinkle
尝试添加启用插件的代码: webSettings.setDomStorageEnabled(true); try { webSettings.setPluginState(WebSettings.PluginState.ON); } catch (Exception e) {} try { webSettings.setRenderPriority(RenderPriority.HIGH); } catch (Exception e) {} - Tapa Save

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接