Первый экземпляр MapActivity всегда протекает? - PullRequest
5 голосов
/ 25 февраля 2011

При исследовании проблем с памятью в нашем приложении выясняется, что если действие приложения является MapActivity, первый его экземпляр не будет завершен. Приводит к другой утечке памяти, такой как представление, переданное setContentView.

Кто-нибудь замечал это раньше?

Вот код тестирования, показывающий, что «MainActivity: 1» не завершена, тогда как это так, если MainActivity наследует от Activity.

Чтобы проверить, нужно много раз менять ориентацию устройства или эмулятора.


import com.google.android.maps.MapActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends MapActivity {
  private static final String  defaultTag          = "MA";

  private static final boolean isDebugModeActivate = true;
  private static final boolean isClassTagDisplayed = false;
  private static final boolean isWebModeActivate   = false;

  static public void d(Object thiso, String message)
  {
      String tag = defaultTag + (isClassTagDisplayed == true ? "_" + thiso.getClass().getSimpleName() : "");
      message = (isClassTagDisplayed == false ? thiso.getClass().getSimpleName() + " : " : "") + message;
      Log.d(tag, message);
  }

  public MainActivity()
  {
    counter++;
    uid++;
    id = uid;
    d(this, id + " tst constructor (" + counter + ")");
  }
  private static int counter = 0;
  private static int uid = 0;
  private final int id;

  protected void finalize() throws Throwable
  {
    counter--;
    d(this, id + " tst finalize (" +counter + ") ");
    super.finalize();
  }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    protected boolean isRouteDisplayed()
    {
      return false;
    }
}

Спасибо, David

1 Ответ

0 голосов
/ 25 февраля 2011

Возможно, вам стоит обменяться заметками с NickT здесь

...