3
\$\begingroup\$

I started to code on Android, but I think my code is very heavy and may slow down the performance of my app.

For example, when I run my app and I try to drag the page in one of my webviews, it's pretty laggy.

This does not include imports:

package com.anthoapps.googlewebviewsample;
public class MainActivity extends Activity {
 /** Called when the activity is first created. */
 //AFFICHAGE DU LOGO PENDANT 3SEC
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.fragment_main);
 final ImageView imgv1 = (ImageView) findViewById(R.id.logo);
 imgv1.setVisibility(View.VISIBLE);
 new Handler().postDelayed(new Runnable() {
 @Override
 public void run() {
 imgv1.setVisibility(View.GONE);
 }
 },2 * 1000); // Pour 3 secondes
 final WebView webv1 = (WebView) findViewById(R.id.webView);
 webv1.setVisibility(View.INVISIBLE);
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonfacebook))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("https://m.facebook.com/Google");
 }
 }); 
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonvip))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.fr");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonlive))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.de");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.liste))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.it");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.pagefb))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("https://m.facebook.com/Google");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.pagevip))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 webv1.setVisibility(View.VISIBLE);
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.fr"); 
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.live))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.de");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.boutonliste))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.it");
 }
 });
}
}
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Oct 30, 2014 at 14:51
\$\endgroup\$
4
  • \$\begingroup\$ Does your indentation look like that in your IDE? \$\endgroup\$ Commented Oct 30, 2014 at 14:53
  • \$\begingroup\$ No it's weird because I moved the code 4 time from the left to display it in code \$\endgroup\$ Commented Oct 30, 2014 at 14:57
  • \$\begingroup\$ Can you just directly paste your code into the question? Even if it doesn't format it as code, I think I can fix it for you and then it will look good \$\endgroup\$ Commented Oct 30, 2014 at 14:58
  • \$\begingroup\$ There is a lot of issue with your Formatting here, almost nothing is indented properly. And please if you want CodeReview to review your code, please translate at least the Comments to English. \$\endgroup\$ Commented Oct 30, 2014 at 15:24

2 Answers 2

2
\$\begingroup\$

There is a lot of issue with your Formatting here, almost nothing is indented properly.

And please if you want CodeReview to review your code, please translate at least the Comments to English.

Here is what the code should look like when it is properly indented

package com.anthoapps.googlewebviewsample;
public class MainActivity extends Activity {
 /** Called when the activity is first created. */
 //AFFICHAGE DU LOGO PENDANT 3SEC
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.fragment_main);
 final ImageView imgv1 = (ImageView) findViewById(R.id.logo);
 imgv1.setVisibility(View.VISIBLE);
 new Handler().postDelayed(new Runnable() {
 @Override
 public void run() {
 imgv1.setVisibility(View.GONE);
 }
 },2 * 1000); // Pour 3 secondes
 final WebView webv1 = (WebView) findViewById(R.id.webView);
 webv1.setVisibility(View.INVISIBLE);
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonfacebook))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("https://m.facebook.com/Google");
 }
 }); 
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonvip))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.fr");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.boutonlive))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.de");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((ImageButton)findViewById(R.id.liste))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.it");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.pagefb))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("https://m.facebook.com/Google");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.pagevip))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 webv1.setVisibility(View.VISIBLE);
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.fr"); 
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.live))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.de");
 }
 });
 // Nous cherchons le bouton dans notre interface
 ((Button)findViewById(R.id.boutonliste))
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 WebView wvSite = (WebView)findViewById(R.id.webView);
 WebView myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setWebViewClient(new WebViewClient(){
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = wvSite.getSettings();
 webSettings.setJavaScriptEnabled(true);
 //...et on charge la page
 wvSite.loadUrl("http://www.google.it");
 }
 });
 }
}

You also have a bit of extra white space in there as well

answered Oct 30, 2014 at 15:28
\$\endgroup\$
5
  • \$\begingroup\$ Yes I know, but is it a way to avoid configuring the webview multiple times ? For example in the onclicklistener, just type wvSite.loadUrl("anysite.com"); \$\endgroup\$ Commented Oct 30, 2014 at 15:43
  • \$\begingroup\$ I'm not complaining about the identation, but about the performance of the webview in app :) \$\endgroup\$ Commented Oct 30, 2014 at 15:46
  • 3
    \$\begingroup\$ Maintenance is an issue for performance, because if you can't read your code efficiently than you have a decrease in developer performance, or worse more bugs because something was read wrong. \$\endgroup\$ Commented Oct 30, 2014 at 15:53
  • \$\begingroup\$ I know but it's just an app for testing, I don't mind making a lot of apps, I only need to make this one better. \$\endgroup\$ Commented Oct 31, 2014 at 7:40
  • 1
    \$\begingroup\$ so instead of fixing a bug in your code you would rather write a new application from scratch? \$\endgroup\$ Commented Oct 31, 2014 at 13:31
1
\$\begingroup\$

There is a lot of code duplication in your onCreate - all your onClickListeners are equal except for the url they load. You can put those urls to views' tags or create Map to map id-url.

Also you are finding your web view on every click - make it a field and find and configure it once. findViewById is pretty heavy for performance.

Implementing: (sorry, I don't know the language used for comments so their structure can be damaged)

private WebView myWebView; //fields are accessible for anonymous classes
/**
 * Called when the activity is first created.
 */
//AFFICHAGE DU LOGO PENDANT 3SEC
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.fragment_main);
 final ImageView logo = (ImageView) findViewById(R.id.logo); //bad name. you can use "logo", or if you are stuck to pointing the type in the name - ivLogo
 // logo.setVisibility(View.VISIBLE); //onCreate is called when activity is first created, so you can omit this line.
 new Handler().postDelayed(new Runnable() { //non-static handlers are dangerous for memory-leaks
 @Override
 public void run() {
 imgv1.setVisibility(View.GONE);
 }
 }, 2 * 1000); // Pour 3 secondes - this is for 2 :)
 myWebView = (WebView) findViewById(R.id.webView);
 myWebView.setVisibility(View.INVISIBLE); //again, onCreate is called when activity is first created, so explicitly set webview's visibility in your xml
 //You are duplicating code in all your onClickListeners. The only explicit difference is in url to load. We can put that in views tag or create Map<Integer, String> with <id-urlToLoad>
 myWebView.setWebViewClient(new WebViewClient() {
 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 view.loadData("Impossible de charger la page, veuillez v&eacute;rifier votre connexion internet.", "text/html", "UTF-8");
 }
 });
 //...on active JavaScript...
 WebSettings webSettings = myWebView.getSettings();
 webSettings.setJavaScriptEnabled(true);
 final OnClickListener onClickListener = (OnClickListener) new OnClickListener() {
 @Override
 public void onClick(View v) {
 // Nous affichons un message à l’utilisateur
 // Instanciation du WebView...
 webv1.setVisibility(View.VISIBLE);
 //...et on charge la page
 myWebView.loadUrl((String) v.getTag());
 }
 };
 final ImageButton fbButton = (ImageButton) findViewById(R.id.boutonfacebook);
 fbButton.setTag("https://m.facebook.com/Google");
 fbButton.setOnClickListener(onClickListener);
 // Nous cherchons le bouton dans notre interface
 final ImageButton vipButton = (ImageButton) findViewById(R.id.boutonvip);
 vipButton.setTag("http://www.google.fr")
 vipButton
 // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
 .setOnClickListener(onClickListener);
 //and so on...
}

And names of variables could be more meaningful. imgv1 is pretty useless as a name, you can use "logo" or (if you are stuck to typing view's type into name) ivLogo. I'd use "ivLogo" for xml id and "logo" for variable name.

answered Oct 31, 2014 at 16:48
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.