Ugh -- yep, that was the problem. Thanks! :-)
On Sep 8, 2:04 pm, Romain Guy wrote:
> When you do this kind of test, you should force GCs on the system
> process with DDMS, then force GCs in your process and then check how
> many activities you have running.
>
>
>
>
>
> On Tue, Sep 8, 2009 at 10:57 AM, Flying Coder wrote:
>
> > There appears to be a leak when using PhoneStateListeners. The
> > following code simply reigsters in onResume and unregisters in onPause
> > a PhoneStateListener. Repeatedly launch then press BACK (so the app
> > is finished & onDestory is called before the next launch) and the
> > number of activities reported by meminfo will equal the number of
> > launches. For instance, here is the output I get after launching (and
> > finishing) 11 times in sequence:
>
> > dumpsys meminfo com.example.leak
> > Currently running services:
> > meminfo
> > ---
> > DUMP OF SERVICE meminfo:
> > Applications Memory Usage (kB):
> > Uptime: 12204322 Realtime: 12204322
>
> > ** MEMINFO in pid 1358 [com.example.leak] **
> > native dalvik other total
> > size: 2648 3079 N/A 5727
> > allocated: 2604 2254 N/A 4858
> > free: 43 825 N/A 868
> > (Pss): 913 1305 1475 3693
> > (shared dirty): 1080 3864 568 5512
> > (priv dirty): 808 936 1056 2800
>
> > Objects
> > Views: 77 ViewRoots: 1
> > AppContexts: 12 Activities: 11
> > Assets: 2 AssetManagers: 2
> > Local Binders: 36 Proxy Binders: 21
> > Death Recipients: 0
> > OpenSSL Sockets: 0
>
> > SQL
> > heap: 0 dbFiles: 0
> > numPagers: 0 inactivePageKB: 0
> > activePageKB: 0
> > #
>
> > Without the PhoneStateListener, the number of activities is always 1
> > no matter how many times the app is launched & finished. So, am I
> > doing anything wrong here? Or is this a bug in the
> > TelephonyManager?
>
> > Thanks,
> > Steve
>
> > here's the code
> > package com.example.leak;
>
> > import android.app.Activity;
> > import android.content.Context;
> > import android.os.Bundle;
> > import android.telephony.PhoneStateListener;
> > import android.telephony.TelephonyManager;
> > import android.util.Log;
>
> > public class LeakExample extends Activity {
>
> > private class MyPhoneStateListener extends PhoneStateListener {
> > �...@override
> > public void onCallStateChanged(int state, String
> > incomingNumber) {
>
> > if ((state == TelephonyManager.CALL_STATE_RINGING)
> > || (state ==
> > TelephonyManager.CALL_STATE_OFFHOOK)) {
> > LeakExample.this.finish();
> > }
> > }
> > }
>
> > MyPhoneStateListener phone_listener = new MyPhoneStateListener();
>
> > TelephonyManager telMgr ;
>
> > �...@override
> > public void onCreate(Bundle savedInstanceState) {
> > super.onCreate(savedInstanceState);
> > setContentView(R.layout.main);
>
> > telMgr = (TelephonyManager) getSystemService
> > (Context.TELEPHONY_SERVICE);
> > }
>
> > �...@override
> > protected void onPause() {
> > super.onPause();
>
> > telMgr.listen(phone_listener,
> > PhoneStateListener.LISTEN_NONE);
> > }
>
> > �...@override
> > protected void onResume() {
> > super.onResume();
>
> > telMgr.listen(phone_listener,
> > PhoneStateListener.LISTEN_CALL_STATE);
> > }
>
> > �...@override
> > protected void onDestroy() {
> > super.onDestroy();
>
> > Log.v("LEAK EXAMPLE", "onDestory");
> > }
>
> > }
>
> --
> Romain Guy
> Android framework engineer
> romain...@android.com
>
> Note: please don't send private questions to me, as I don't have time
> to provide private support. All such questions should be posted on
> public forums, where I and others can see and answer them- Hide quoted text -
>
> - Show quoted text -
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---