मैं वेबसाइट लोड करने के लिए WebView
का उपयोग कर रहा हूं। लेकिन यह बहुत धीमी है और विशिष्ट वेबसाइटों को लोड होने पर लीक हो रही है। मैं निम्नलिखित कोड के साथ WebView
लोड कर रहा हूं।वेबव्यू वेबपृष्ठ लोड नहीं कर रहा है
@Override
protected void onNewIntent(Intent intent) {
if (intent.getStringExtra("url") != null) {
webView.loadurl(intent.getStringExtra("url"));
}
}
लेकिन मैं webView.loadUrl(Config.URL);
(Config.URL
उपरोक्त निर्दिष्ट एक ही यूआरएल हो सकती है) बोल रहा हूँ onCreate()
विधि में निम्नलिखित के साथ WebView
आरंभ के बाद।
this.webView = (WebView) findViewById(R.id.wv);
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.getSettings().setLoadsImagesAutomatically(true);
this.webView.getSettings().setDomStorageEnabled(true);
this.webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
MyClient client = new MyClient(WebActivity.this, (ProgressBar)findViewById(R.id.progressBar));
webView.setWebViewClient(client);
कर कि मैं उसकी सूचनाओं की लंबित इरादे सेएक लोड हो रहा है
onCreate()
से ठीक काम कर रहा है (ठीक नहीं है, यह बहुत धीमी गति से है)। लेकिनonNewIntent()
से लोड होने वाला वही यूआरएल काम नहीं कर रहा है !!!।onNewIntent()
में ऐसा करने के बादwebView.loadurl()
का उपयोग करके कोई URL लोड नहीं हुआ और वर्तमान पृष्ठ अचल हो रहा है। अर्थात। स्क्रॉलबारWebView
में आगे बढ़ रहे हैं लेकिन पृष्ठ स्क्रॉल नहीं कर रहा है। मैंने कोonCreate()
में एक ही यूआरएल का परीक्षण किया और यह काम कर रहा है।
intent.putExtra("url", Config.URL+targetUrl);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
साथ यूआरएल गुजर रहा लिए
। हालांकि यह कुछ डिवाइसों में काम कर रहा है यानी Google नेक्सस। लेकिन यह ज्यादातर फोन पर काम नहीं कर रहा है। क्या समस्या है जब onNewIntent()
में loadurl()
विधि का उपयोग कर रहा है: मैं
android:hardwareAccelerated="true"
Myclient
public class MyClient extends WebViewClient{
private Context context;
private Activity activity;
private Handler handler;
private Runnable runnable;
private ProgressBar viewBar;
private String ret,ret2;
public void setFirstLoad(boolean firstLoad) {
this.firstLoad = firstLoad;
}
private boolean firstLoad=false;
public MyClient(Activity activity, ProgressBar bar) {
this.context = activity.getApplicationContext();
this.activity = activity;
viewBar=bar;
handler=new Handler();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
/*if (url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL,
Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}else if(url.startsWith("http:") || url.startsWith("https:")) {
*//*view.setVisibility(View.GONE);
viewBar.setVisibility(View.VISIBLE);*//*
view.loadUrl(url);
}
return true;*/
if (Uri.parse(url).getHost().equals("www.somepage.com")) {
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Answers.getInstance().logShare(new ShareEvent()
.putContentId(Build.USER)
.putMethod(shareName(url))
.putContentName(contentDecode(url))
.putContentType("news_share"));
}catch (android.content.ActivityNotFoundException e){
Log.e("Activity not found",e.toString());
Toast.makeText(context,"Application not found",Toast.LENGTH_LONG).show();
}
return true;
}
@Override
public void onReceivedError(final WebView view, int errorCode, String description, final String failingUrl) {
//Clearing the WebView
try {
view.stopLoading();
} catch (Exception e) {
}
try {
view.clearView();
} catch (Exception e) {
}
if (view.canGoBack()) {
view.goBack();
}
view.loadUrl("about:blank");
//Showing and creating an alet dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity);
alertDialog.setTitle("Error");
alertDialog.setMessage("No internet connection was found!");
alertDialog.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
view.loadUrl(failingUrl);
}
});
AlertDialog alert = alertDialog.create();
alert.show();
//Don't forget to call supper!
super.onReceivedError(view, errorCode, description, failingUrl);
}
@Override
public void onLoadResource(final WebView view, String url) {
super.onLoadResource(view, url);
//injectScriptFile(view, "js/script.js");
injectCSS(view,"css/style.css");
if (firstLoad){
firstLoad=false;
view.setVisibility(View.INVISIBLE);
viewBar.setVisibility(View.VISIBLE);
runnable=new Runnable() {
@Override
public void run() {
viewBar.setVisibility(View.GONE);
view.setVisibility(View.VISIBLE);
}
};
handler.postDelayed(runnable,2000);
}
// test if the script was loaded
// view.loadUrl("javascript:setTimeout(hideMe(), 200)");
}
/*@Override
public void onPageFinished(final WebView view, String url) {
//System.gc();
}*/
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
System.gc();
}
सवाल है?
क्षमा करें महोदय, क्या आप ** intent.getStringExtra ("url") ** में वांछित परिणाम ढूंढ रहे हैं? इसके अलावा, LogCat पर अजीब संदेश हैं? धन्यवाद। – statosdotcom
@statosdotcom हाँ मैंने इसे मंशा में पाया। लॉगकैट में यह दिखा रहा है कि वेब पेज लोड हो रहा है लेकिन display.ie नहीं। पृष्ठ पिछले –
से नहीं बदल रहा है अगर आप इसका उपयोग कर रहे हैं तो कृपया अपनी ऑनपॉज़ विधि शामिल करें क्योंकि इसे ऑनन्यून्टेंट से पहले कहा जाता है। क्या आपको ऑनन्यून्टेंट पर ब्रेकपॉइंट मिला है यानी क्या आप वाकई हिट हैं? –