Issue
I am facing problem regarding load a url in android below 5.0(lollipop) It is too slow to load data but in android 5.0 or above its working fine. how to resolve this issue? I have follow this link . & How to improve webview load time
my code is
@SuppressLint({ "SetJavaScriptEnabled", "DefaultLocale" })
public class YS_WebViewActivity extends Activity
{
private Button btnDone;
private WebView webViewLoadUrl;
private YS_GeneralUtility generalUtility;
private Dialog alertDialogBox;
private String url = "";
private TextView tvLoading;
private Button btnCancel;
private Button btnRetry;
@SuppressLint("InlinedApi")
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
btnDone = (Button) findViewById(R.id.btnDone);
webViewLoadUrl = (WebView) findViewById(R.id.webViewLoadUrl);
//webViewLoadUrl.setBackgroundColor(Color.parseColor("#123456"));
tvLoading = (TextView) findViewById(R.id.tvLoading);
url = getIntent().getExtras().getString("url");
webViewLoadUrl.setVisibility(View.INVISIBLE);
generalUtility = new YS_GeneralUtility(this);
webViewLoadUrl.getSettings().setJavaScriptEnabled(true); // enable javascript
try {
webViewLoadUrl.getSettings().setRenderPriority(RenderPriority.HIGH);
webViewLoadUrl.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webViewLoadUrl.getSettings().setDomStorageEnabled(true);
webViewLoadUrl.getSettings().setAllowFileAccess(true);
webViewLoadUrl.getSettings().setAllowContentAccess(true);
webViewLoadUrl.getSettings().setAllowFileAccessFromFileURLs(true);
//webViewLoadUrl.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
} catch (Exception e) {
e.printStackTrace();
}
tvLoading.setTypeface(generalUtility.faceAvenirLight);
btnDone.setTypeface(generalUtility.faceAvenirMedium);
btnDone.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
myErrorFinish();
}
});
webViewLoadUrl.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
//Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url)
{
//Log.i(TAG, "Finished loading URL: " + url);
webViewLoadUrl.setVisibility(View.VISIBLE);
tvLoading.setVisibility(View.INVISIBLE);
}
String errorData = "<html><head></head>"
+ "<body style=' font-family:Avenir !important;font-weight:lighter !important; color:#ffffff; margin : 0px auto;'>"
+ "<div style = 'width : 100% ; height : 100% ; background:#123456;'> </div>"
+ "</body></html>";
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
// Log.e(TAG, failingUrl + "Error: " + description);
view.loadData(errorData, "text/html", "UTF-8");
alertDialogOnInternetOff(getString(R.string.errorMsgInternet));
// finish();
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
handler.proceed();
}
});
webViewLoadUrl.loadUrl(url);
// setContentView(webview);
}
private void alertDialogOnInternetOff(String message)
{
alertDialogBox = new Dialog(YS_WebViewActivity.this, R.style.InternetErrorPopup);
alertDialogBox.requestWindowFeature(Window.FEATURE_NO_TITLE);
alertDialogBox.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialogBox.setContentView(R.layout.internetpopup_dialog);
alertDialogBox.setCancelable(false);
alertDialogBox.show();
btnCancel = (Button) alertDialogBox.findViewById(R.id.btnCancel);
btnRetry = (Button) alertDialogBox.findViewById(R.id.btnRetry);
TextView txtExitMessage = (TextView) alertDialogBox.findViewById(R.id.textViewMessage);
TextView horizontalLinePopup = (TextView) alertDialogBox.findViewById(R.id.horizontalLinePopup);
TextView verticalLinePopup = (TextView) alertDialogBox.findViewById(R.id.verticalLinePopup);
horizontalLinePopup.setBackgroundColor(getResources().getColor(R.color.internetpopupBorderinnerpageColor));
verticalLinePopup.setBackgroundColor(getResources().getColor(R.color.internetpopupBorderinnerpageColor));
txtExitMessage.setTypeface(generalUtility.faceAvenirLight);
btnCancel.setTypeface(generalUtility.faceAvenirLight);
btnRetry.setTypeface(generalUtility.faceAvenirLight);
txtExitMessage.setText(R.string.errorMsgInternet);
btnCancel.setText(R.string.cancel);
btnRetry.setText(R.string.retry);
alertDialogBox.setCancelable(false);
btnCancel.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
alertDialogBox.dismiss();
Log.d("AlertDialog", "Negative");
YS_WebViewActivity.this.finish();
}
});
btnRetry.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
alertDialogBox.dismiss();
Log.d("AlertDialog", "Positive");
tvLoading.setVisibility(View.VISIBLE);
webViewLoadUrl.loadUrl(url);
}
});
}
private void myErrorFinish()
{
/*
* Jump to the Setting Screen on pressing back button of device
*/
YS_WebViewActivity.this.finish();
//overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_bottom);
}
@Override
public void onBackPressed()
{
myErrorFinish();
super.onBackPressed();
}
}
This is XML...
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/listback"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="42dip"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@drawable/navigationbackground" />
<Button
android:id="@+id/btnDone"
android:layout_width="wrap_content"
android:layout_height="42dip"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@android:color/transparent"
android:text="@string/done"
android:textColor="@android:color/white"
android:textSize="17sp" />
<WebView
android:id="@+id/webViewLoadUrl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/btnDone"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/tvLoading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/loading"
android:textColor="@android:color/white"
android:textSize="18sp" />
</RelativeLayout>
Solution
If after all other answer your problem is still remains then you need to test your URL/server response and data format.
Answered By - MPG
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.