使匿名 class 静态 - 通过静态方法
Make anonymous class static - through static method
我有以下设计的想法
public void cntDownPossesion() {
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
int poss = Integer.parseInt(possesionTextView.getText().toString());
poss--;
possesionTextView.setText("" + poss);
iCount++;
}
}
因为每帧都会创建一个新的 Runnable()
。我使用 SurfaceView
并且它使用工作线程。 textview
是在主线程上创建的,所以我必须将 "poss" 的更新放回主线程,因为工作线程无法触及它。
我猜这可能会造成高内存消耗,不知道 GC 是否跟上??
我想到了使 Runnable 对象静态化的想法,但由于它是一个内部类,所以这是不可能的。如何使上下文,即方法 cntDownPossesion
静态 - 如果方法是静态的,那么 Innerclass
本身不是静态的吗???
如果实在觉得是性能瓶颈,可以将Runnable提取到成员变量中
private Context context;
private TextView possesionTextView;
private int iCount;
private final Runnable r = new Runnable() {
@Override
public void run() {
int poss = -1 + Integer.parseInt(possesionTextView.getText().toString());
possesionTextView.setText(String.valueOf(poss));
iCount++;
}
};
public void cntDownPossesion() {
((Activity) context).runOnUiThread(r);
}
我有以下设计的想法
public void cntDownPossesion() {
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
int poss = Integer.parseInt(possesionTextView.getText().toString());
poss--;
possesionTextView.setText("" + poss);
iCount++;
}
}
因为每帧都会创建一个新的 Runnable()
。我使用 SurfaceView
并且它使用工作线程。 textview
是在主线程上创建的,所以我必须将 "poss" 的更新放回主线程,因为工作线程无法触及它。
我猜这可能会造成高内存消耗,不知道 GC 是否跟上??
我想到了使 Runnable 对象静态化的想法,但由于它是一个内部类,所以这是不可能的。如何使上下文,即方法 cntDownPossesion
静态 - 如果方法是静态的,那么 Innerclass
本身不是静态的吗???
如果实在觉得是性能瓶颈,可以将Runnable提取到成员变量中
private Context context;
private TextView possesionTextView;
private int iCount;
private final Runnable r = new Runnable() {
@Override
public void run() {
int poss = -1 + Integer.parseInt(possesionTextView.getText().toString());
possesionTextView.setText(String.valueOf(poss));
iCount++;
}
};
public void cntDownPossesion() {
((Activity) context).runOnUiThread(r);
}