Problem releasing activities

by Joan Pujol » Fri, 28 Jan 2011 06:26:15 GMT


Sponsored Links
 've an application that has a service that updates some widgets and
also has some normal foreground activities to let the user view some
data.
My problem is that I discovered [1] that my application consumes a lot
of memory. That memory is mainly consumed by the activities, and the
big problem is that I'm not been able to release the memory of the
activities once they are started.

I've look at various articles about memory leaks and I've tried to
don't retain activity contexts.
I've tried to put a finish() in onPause() of activity to try to force
to release
I've tried to analyze with MAT with dominator tree but it doesn't
shows any class of my app as a dominator.
Also I've tried to analyze one of the activities with MAT, but I don't
see why memory is retained. Here is an extract of ingoing references
to one of the activities:
It seems that all of this references are from the view, or is one of
them suspicious?

Class
Name
| Shallow Heap | Retained Heap
---------------------------------------------------------------------------------------------------------------
cat.joanpujol.eltemps.PredictionActivity @
0x482b70e0 | 192 | 16.304
|- mContext android.widget.ToggleButton @
0x48195bf8 | 536 | 2.800
|- mContext com.android.internal.policy.impl.PhoneWindow$DecorView @
0x4819f4b8 | 368 | 696
|- mContext com.android.internal.policy.impl.PhoneLayoutInflater @
0x481a5dc0 | 32 | 56
|- mContext com.android.internal.policy.impl.PhoneLayoutInflater @
0x481a5e08 | 32 | 88
|- [0] java.lang.Object[2] @
0x481a5e30 | 24
| 56
|- mContext android.widget.ScrollView @
0x481b3cc8 | 384 |
1.392
|- mCallback, mContext com.android.internal.policy.impl.PhoneWindow @
0x481c74c8| 176 | 2.320
|- mContext android.widget.FrameLayout @
0x481ce8a8 | 328 | 648
|- mContext android.widget.LinearLayout @
0x481d66a0 | 328 | 5.112
|- referent java.lang.ref.WeakReference @
0x481ef528 | 24 | 24
|- activity android.app.LocalActivityManager$LocalActivityRecord @
0x48226cc0 | 48 | 48
|- mOuterContext android.app.ContextImpl @
0x4827ee48 | 152 | 320
|- mContext android.widget.ToggleButton @
0x4828f3a0 | 536 | 2.808
|- mContext android.widget.TextView @
0x48292838 | 504 |
3.880
|- mContext android.widget.LinearLayout @
0x4829b620 | 328 | 584
|- mContext android.widget.ToggleButton @
0x482b54e0 | 536 | 2.808
|- mContext android.widget.ImageView @
0x482ca830 | 312 |
720
'- Total: 17
entries
| |
---------------------------------------------------------------------------------------------------------------

Some one can give me some ligth?
I'm doing something bad?
Any information or suggerence will be very apreciated.

A lot of thanks in advance,



[1]
http://groups.google.com/group/android-developers/browse_thread/threa



Re: Problem releasing activities

by JAlexoid (Aleksandr Panzin) » Sat, 29 Jan 2011 00:06:35 GMT


 ry getting the phone memory filed up. So it starts GC'ing and killing
off processes to release the memory. Or try filling up the heap with
total garbage and trigger a GC.
If after that point you actually have the unused(or what you would
expect to become garbage) Activities and Views retained, then you have
a leak.

High mem usage does not mean that there is a leak, by itself.

And to have a low mem usage, you need to carefully create new objects
and hold on to them for a long time. That goes also for Strings,
resources and goes double for Bitmaps.

On 28 , 00:26, Joan Pujol <joanpu...@gmail.com> wrote:

--


Sponsored Links


Other Threads

1. Application Suspended?

Hi,

OK, I posted earlier how our application was suspended from the Market
by Google, but I have removed the comment. It was a bit of a rant
regarding our dissatisfaction with not being allowed to use PayPal to
sell License Keys while Google prepares their order system. BUT in the
end it is not really relevant to the problem our organization now
faces.

Now that our app was suspended from the Android Market, once we remove
the "offending code", how do we redeploy the application? Can we just
upload a new version, do we have to remove the old version, or worse
yet, will we have to go through some sort of review process?

Thanks for your help,

Kevin







--~--~---------~--~----~------------~-------~--~----~

2. New To Android Layouts.

I'm used to Java Layouts and don't really like XML, so I'm trying to
create a simple screen with a top piece, that has a text("Title") and
a editText that will allow you to edit the title, then a text(body)
with a larger EditText for a body text, basically the same as done in
the NotePad activities except with code instead of XML. I've tried the
code and I keep getting a crash, maybe I'm just thinking in java too
much, but can anyone point out my flaw?

        LinearLayout titleContainer = new LinearLayout(this);
        LinearLayout bodyContainer = new LinearLayout(this);
        LinearLayout mainContainer = new LinearLayout(this);
        TextView titleText = new TextView(this);
        EditText titleEdit = new EditText(this);
        TextView bodyText = new TextView(this);
        EditText bodyEdit = new EditText(this);

        titleText.setText("Title");
        titleEdit.setText("Enter Title Here:");
        bodyText.setText("Body");
        bodyEdit.setText("Enter Body Here:");

        titleContainer.setOrientation(LinearLayout.VERTICAL);
        bodyContainer.setOrientation(LinearLayout.HORIZONTAL);

        titleContainer.addView(titleText, new LinearLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0));
        titleContainer.addView(titleEdit, new LinearLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1));
        bodyContainer.addView(bodyText, new LinearLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0));
        bodyContainer.addView(bodyEdit, new LinearLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1));

        mainContainer.addView(titleContainer, new
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 0));
        mainContainer.addView(bodyContainer, new
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1));
        setContentView(mainContainer);

--~--~---------~--~----~------------~-------~--~----~

3. What book(s) for this Android newcomer?

4. How to configure android emulator virtual router as a TCP PORT PRESERVING CONE

5. emulator-5554 disconnected! Cancelling

6. ADB command not found

7. Really new newbie asks about a good instructive book