使匿名 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);
}