【发布时间】:2021-02-24 20:29:50
【问题描述】:
我的应用程序中有一个不断增加的值,执行此操作的处理程序位于我的“EventHandlerClass.java”内的静态方法中。 我现在想在 MainActivity 中的 TextView 上显示这个值。
这是我的处理程序的静态方法:
public static void pointsCounter() {
handler = new Handler(Looper.getMainLooper());
runnable = new Runnable() {
public void run() {
points = points + 5;
String pointMsg = "Points: " + points;
MainActivity.coinsTextView.setText(pointMsg);
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000);
}
这个 pointsCounter 方法是从 EventHandlerClass.java 中的另一个静态方法调用的。
它每秒增加点值 +5,我希望它显示在 TextView 中。 正确的方法是什么? 因为当我以这种方式尝试时,我必须将 MainActivity 中的 coinTextView 设为静态,我们都知道您不能从静态上下文中引用非静态变量。 当我这样做时,它告诉我“不要将 Android 上下文类放在静态字段中;这是内存泄漏”。 所以我的问题是如何从静态方法更新我的 UI 元素而不会有内存泄漏的风险? 正确的做法是什么?
【问题讨论】:
标签: java android memory-leaks static