Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7942709
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T00:03:22+00:00 2026-06-04T00:03:22+00:00

Hi i have been working through my first android app and it’s starting to

  • 0

Hi i have been working through my first android app and it’s starting to become a Little slow and laggy. I have done iPhone apps before and i know that i have to release stuff. so i suppose my question is what are best practices for coding for android in terms of avoiding memory leaks. loading data from a JSON feed and just generally streamline my code to make it more efficient to improve user experience?

any help you can provide would be appreciated and passionate about android but just want to make sure i’m doing it right

heres a sample of my code so far

public class HomeActivity extends ListActivity {

    private MergeAdapter adapter=null;
    private ArrayAdapter<String> arrayAdapter=null;
    private ArrayAdapter<String> arrayAdapter2=null;
    private ArrayAdapter<String> arrayAdapter3=null;
    private static final String apiKey = "46fhr636gdbc737hjd92932dd"; 
    private static final String apiUser = "android-app-v1";
    private static final String ChosenTeam = null;
    private static String ChosenMethod = null; 
    public String fulldata = null;
    public String chosenLeagueId = "40";
    public List<String> newsList = null;
    public List<String> newsList2 = null;
    public List<String> newsList3 = null;

    public int newsAmount = 0;


    long unixTimeStamp = System.currentTimeMillis() / 1000L;

    //add Time Stamp to URL


    //public String chosenMethod; 


    String newsFeedRequest = "1.0/website/" + chosenLeagueId + "/news?timestamp=" + unixTimeStamp;
    String fixturesFeedURL = "https://website.com/_services/api/" + newsFeedRequest;
    private int container;


    private static String buildHmacSignature(String pKey, String pStringToSign)
    {
      String lSignature = "None";
      try
      {
        Mac lMac = Mac.getInstance("HmacSHA256");
        SecretKeySpec lSecret = new SecretKeySpec(pKey.getBytes(), "HmacSHA256");
        lMac.init(lSecret);

        byte[] lDigest = lMac.doFinal(pStringToSign.getBytes());
        BigInteger lHash = new BigInteger(1, lDigest);
        lSignature = lHash.toString(16);
        if ((lSignature.length() % 2) != 0) {
          lSignature = "0" + lSignature;
        }
      }
      catch (NoSuchAlgorithmException lEx)
      {
        throw new RuntimeException("Problems calculating HMAC", lEx);
      }
      catch (InvalidKeyException lEx)
      {
        throw new RuntimeException("Problems calculating HMAC", lEx);
      }

      return lSignature;
    }


    public void checkPreferences(){


        SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
        final String ChosenMethodPref = preferences.getString("ChosenMethod", ChosenMethod);
        Log.v("myapp", "ChosenMethod Home = " + ChosenMethodPref);

         if (ChosenMethodPref.equals("Team")) {
             setContentView(R.layout.homeactteam2);
             newsAmount = 5;

         } else {
             setContentView(R.layout.homeact);
             newsAmount = 10;
         }
}

    public void loadData(){String myhash = buildHmacSignature(apiKey, fixturesFeedURL);


    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(fixturesFeedURL);

    List<NameValuePair> pairs = new ArrayList<NameValuePair>();
    pairs.add(new BasicNameValuePair("requestToken", myhash));
    pairs.add(new BasicNameValuePair("apiUser", apiUser));

    try {
        post.setEntity (new UrlEncodedFormEntity(pairs));
        HttpResponse response = client.execute(post);
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        String json = reader.readLine();
        fulldata = String.valueOf(json);
        Log.v("myApp","newsdata" + fulldata);

        newsList = new ArrayList<String>();
        newsList2 = new ArrayList<String>();
        newsList3 = new ArrayList<String>();

        JSONObject obj = new JSONObject(json);    
        JSONObject objData = obj.getJSONObject("data");
        JSONArray jArray = objData.getJSONArray("news");


           for(int t = 0; t < newsAmount; t++){
               JSONObject newsTitleDict = jArray.getJSONObject(t);

             newsList3.add(newsTitleDict.getString("title"));

           }

           for(int t = 0; t < 1; t++){
               JSONObject newsTitleDict = jArray.getJSONObject(t);

             newsList.add(newsTitleDict.getString("title"));
             newsList2.add(newsTitleDict.getString("title"));

           }



    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    arrayAdapter = new ArrayAdapter<String>(this, R.layout.single_item, newsList);
    arrayAdapter2 = new ArrayAdapter<String>(this, R.layout.single_item, newsList2);
    arrayAdapter3 = new ArrayAdapter<String>(this, R.layout.single_item, newsList3);

        ListView list = getListView();
           list.setTextFilterEnabled(true);

           LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
            View header = inflater.inflate( R.layout.homeheader, list, false);
            View header2 = inflater.inflate( R.layout.homeheader2, list, false);
            View header3 = inflater.inflate( R.layout.homeheader3, list, false);


    //setListAdapter (arrayAdapter);


        adapter = new MergeAdapter();
        adapter.addView(header);
        adapter.addAdapter(arrayAdapter);
        adapter.addView(header2);
        adapter.addAdapter(arrayAdapter2);
        adapter.addView(header3);
        adapter.addAdapter(arrayAdapter3);
        setListAdapter(adapter);

    }   
@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        checkPreferences();
        loadData();


        Button backbtn = (Button) findViewById(R.id.backbtn);

        //Listening to button event
        backbtn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                //Starting a new Intent
                Intent previousScreen = new Intent(getApplicationContext(), ChooseTeamActivity.class);
                ChosenMethod = "null";
                SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = preferences.edit();
                editor.putString("ChosenMethod", ChosenMethod);            
                editor.commit();
                previousScreen.putExtra("FullData", fulldata);
                startActivity(previousScreen);


            }
        });

    }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == R.id.home) {

        startActivity(new Intent(HomeActivity.this, HomeActivity.class));

        return(true);
  }


    if (item.getItemId() == R.id.match) {

        startActivity(new Intent(HomeActivity.this, MatchActivity.class));

        return(true);
  }



    if (item.getItemId() == R.id.teams) {

        startActivity(new Intent(HomeActivity.this, TeamsActivity.class));

        return(true);
  }



    if (item.getItemId() == R.id.twitter) {

        startActivity(new Intent(HomeActivity.this, TwitterActivity.class));

        return(true);
  }

    if (item.getItemId() == R.id.info) {

        startActivity(new Intent(HomeActivity.this, InfoActivity.class));

        return(true);
  }


    return(super.onOptionsItemSelected(item));


}

}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T00:03:23+00:00Added an answer on June 4, 2026 at 12:03 am

    You should take a look at this awesome presentation by Romain Guy.

    It will give you an inside view of the things you are looking for, and you will also get a bunch of handy tips 🙂

    E.g. besides using AsyncTasks and Handlers to avoid overloading the gui thread, you could declare the most of your variables as final. Custom itemrenderer implementations will significantly speed up your gui (scrolling), and -though it’s not a good Java practice-, using direct references instead of getters and setters will also improve somewhat the performance.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been working on a Windows Mobile app for a little while now
I have been working on a project and gotten it through the first stage.
I have been working through projects involving packages that do all the web design
I have been working through the tutorial adapting it to a project I want
I have been working on a django app on my local computer for some
I was turned on to nstrees from another question, and have been working through
I am a newbie and I have been working on an android layout for
I have been working through the tutorial by Alex Young on using flash messages
I have a been working on a game for Android and debugging it on
I am new to asp.net and have been working through the tutorial - up

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.