0

我从Romain Guy那里读到了关于避免 android 中的内存泄漏的信息。我明白我必须

用于getApplicationContext()避免内存泄漏。无论如何,我的代码如下:

MainMenuActivity.java

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
canvasMenu = new CanvasMainMenu(this);
setContentView(canvasMenu);
}

CanvasMainMenu.java

public class CanvasMainMenu extends View {
       private TextView textChallenge;
       public CanvasMainMenu(Context context) {
              super(context);
                      textChallenge = null;
                      textChallenge = new TextView(context);
                      textChallenge.setTypeface(fontJoan);
                      textChallenge.setTextColor(Color.WHITE);
                      textChallenge.setText("99");
                      textChallenge.measure((int)Define.getScreenWidth(), (int)Define.getScreenHeight());
                      textChallenge.layout(0, 0, 200, 200);
                      textChallenge.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20);
                      textChallenge.setDrawingCacheEnabled(true);
                      textChallenge.buildDrawingCache();
       }
}

我的问题是,如果我的代码看起来像这样,我该如何避免内存泄漏。

我必须static TextView在文件 MainMenu.java 中创建吗?

如果我理解错误,请有人解释我。

4

1 回答 1

0

为什么你会认为这段代码会泄漏内存?唯一奇怪的是TextViewtextChallenge你的CanvasMainMenu. 你为什么要创造这个?它在你的课堂上似乎没有任何用处。

为了解决您的具体问题:通常,创建static视图引用是内存泄漏的来源,而不是避免它们的方法。除非您绝对必须(极其罕见的情况)并且您知道自己在做什么,否则不要这样做。

对于您的代码,我也看不到使用应用程序上下文将如何帮助解决内存泄漏。这通常仅在您需要能够在活动被破坏和重新创建后(例如在设备重新定向之后)继续存在的上下文引用时才有用。

于 2013-02-27T08:39:40.280 回答