2016-06-24 2 views
0

У меня проблема с просмотром веб-страниц. Я не знаю, как обрабатывать данные загрузки (тайм-аут) в веб-клиенте, когда я открываю веб-успех, я отключу Wi-Fi и продолжаю открывать веб-клиент. она загружается навсегда (Handle loading webclient android

Вот XML:.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/web_assignment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <include 
     android:id="@+id/retry_assignment" 
     layout="@layout/layout_retry_web" 
     android:visibility="gone" 
     /> 
    <com.lusfold.spinnerloading.SpinnerLoading 
     android:id="@+id/spinnerLoalding_assignment" 
     android:layout_width="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     /> 
    <WebView 
     android:id="@+id/layout_assignment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></WebView> 
</RelativeLayout> 

Кодекс:

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // 
    tokenManager = new TokenManager(getApplicationContext()); 
    token = tokenManager.GetTokenID(); 

    if (networkStateReceiver.isConnected(this)) 
     checkTimeToken(token); 
    else { 
     setVisibleLayout(); 
    } 
} 
@Override 
protected void onStart() { 
    super.onStart(); 

} 
@Override 
protected void onResume() { 
    super.onResume(); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 

} 

@Override 
protected void onStop() { 
    super.onStop(); 
} 

private void setVisibleLayout() { 
    webView.setVisibility(View.GONE); 
    relativeLayout.setVisibility(View.VISIBLE); 
    spinnerLoading.setVisibility(View.GONE); 
    btnRetry.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("onclick", "Tap reload"); 
      loadweb(); 
     } 
    }); 
} 
private void checkTimeToken(final String token) { 

    // 
} 

private void loadweb() { 
    final String strUrl = URL_Utils.Assignments_Load + token; 
    Log.d("URL_asiagnmentss :", strUrl); 

    if (networkStateReceiver.isConnectedNetwork(this)) { 
     webView.loadUrl(strUrl); 
     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
       spinnerLoading.setVisibility(View.VISIBLE); 
       webView.setVisibility(View.INVISIBLE); 
       spinnerLoading.setPaintMode(1); 
       spinnerLoading.setCircleRadius(20); 
       spinnerLoading.setItemCount(8); 
       Log.d("onPageStarted", "onPageStarted"); 
      } 

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

       spinnerLoading.setVisibility(View.INVISIBLE); 
       webView.setVisibility(View.VISIBLE); 
      } 
      @Override 
      public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 

       super.onReceivedError(view, request, error); 

      } 

     }); 
     WebSettings webSettings = webView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setBuiltInZoomControls(true); 
     webSettings.setSupportZoom(true); 
     webView.setVisibility(View.VISIBLE); 
     relativeLayout.setVisibility(View.GONE); 
    } else 
     setVisibleLayout(); 
} 

ответ

0

флиртует всех создать один булева переменная по умолчанию верно какой трек ли тайм-аут или нет .

После этого на вашем WebViewC lient's onPageStarted метод вы должны поставить один поток, который запускается в данный момент времени.

В последнем, onPageFinished установить переменную ложь

Как показано в коде: -.

public class MyWebViewClient extends WebViewClient { 
    boolean timeout = true; 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      Runnable run = new Runnable() { 
       public void run() { 

        if(timeout) { 
         // do what you want 
         showAlert("Connection Timed out", "Whoops! Something went wrong. Please try again later."); 
        } 
       } 
      }; 
      myHandler.postDelayed(run, 5000); 
     } 

     public void onPageFinished(WebView view, String url) { 
       timeout = false; 
     } 
} 
+0

так .. когда я открыть веб-клиент не налива (I код на стартовой странице)? ? –

+0

@AkatsukiBilic обновите свой вопрос с помощью нового кода после использования этого решения. Я проверю ошибку. – Manifest