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 6932457
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T11:42:30+00:00 2026-05-27T11:42:30+00:00

I have just started using Android. I have tried an apps with orientation change.

  • 0

I have just started using Android. I have tried an apps with orientation change.

I am facing bitmap size exceeds VM budget. Have gone through many post in stackoverflow and could not figure out the problem. Exception is throwing at setContentView(R.layout.level1); in onCreate. This is happening when I change the orientation.

I have tried all forums and stackoverflow but could not figure it out. Trying to fix this for past 3 days.

Below class is being called from another activity on button click using intent and startActivity.

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("onCreate", "onCreate");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level1);
     if(!isOrientationChanged) //this part is executed if orientation is not changed (activity starts as usual) 
     { 
      drawableList = new ArrayList<Drawable>();
      drawableList.add( getResources().getDrawable(colorEnum[0]));
      drawableList.add( getResources().getDrawable(colorEnum[1]));
     } 
     isOrientationChanged = false;   
   timeView = (TextView) findViewById(R.id.timeView);
   colorButton = (Button) findViewById(R.id.game_button);
}


@Override
protected void onResume() {
    scoreView = (TextView) findViewById(R.id.scoreView);
    scoreView.setText("Score: " + score);
    hand.postDelayed(runThread, 0);
    super.onResume();
}


 @Override       
 public Object onRetainNonConfigurationInstance()     {          
 isOrientationChanged = true;  
 return null; //as you are not returning an object you are not leaking memory here      
 } 

@Override
protected void onPause() {
    hand.removeCallbacks(runThread);
    super.onPause();
}

 @Override
    protected void onDestroy() {
      super.onDestroy();
        unbindDrawables(findViewById(R.id.RootView));
        System.gc();
    }

    private void unbindDrawables(View view) {
        if (view.getBackground() != null) {
            view.getBackground().setCallback(null);
        }
       if (view instanceof ViewGroup) {
            for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
                Log.d("onDestroy","Inside loop to getting child "+((ViewGroup) view).getChildAt(i));
                unbindDrawables(((ViewGroup) view).getChildAt(i));
            }
            ((ViewGroup) view).removeAllViews();
        }
       hand.removeCallbacks( runThread); 
    }

/** The run thread. */
Thread runThread = new Thread() {
    @Override
    public void run() {
        timeView.setText("Time Left: " + timeLeftVal);
                :
                :
                :
        } else {
        changeColor();
        :
        :
            hand.postDelayed(runThread, GET_DATA_INTERVAL);
        }
    }
};
/**
 * Change color.
 */
private void changeColor() {
    colorButton.setBackgroundDrawable(drawableList.get(randomNum));

}

  1. In onCreate method, creating a drawable list and initializing it on first load.
  2. Using Thread to set the button image background randomly
  3. Calling unbindDrawables() method onDestroy so that on orientation change old view will be removed from memory.
  4. hand.removeCallbacks(runThread) is also being called in onPause method
  5. returned null in onRetainNonConfigurationInstance()

I have fixed the problem.
Small mistake resulted in this big issue. I have used Thread instead of Runnable in Handler. Hence, removeCallback didn’t work as expected.

  • 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-05-27T11:42:31+00:00Added an answer on May 27, 2026 at 11:42 am

    Hope the following links help:

    Eclipse Memory Analyser-Article

    Youtube Video

    Google search for: “Google IO 2011 Memory management for Android Apps”

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

Sidebar

Related Questions

I have just started learning to write apps for android using Eclipse. Where can
I have just started using services in Android and I have a made a
I recently started using android actionbars and contextual action bars (CAB). I have just
Have just started using Google Chrome , and noticed in parts of our site,
Have just started using Visual Studio Professional's built-in unit testing features, which as I
I have just started using silverlight 2 beta and cannot find how to or
I have just started using Boost 1.36. These libraries would be very useful in
i have just started using Moq ver (3.1) and i have read blogs and
I have just started using jQuery and although following code gets the job done,
I have just started using the Data Access Application Block from microsoft. There are

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.