2016-12-22 15 views
1

を通じて、私はすべてのフレームが作成される新しいRunnable()ので、以下の設計匿名クラスは静的ください - 静的メソッド

public void cntDownPossesion() { 

    ((Activity) context).runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 

       int poss = Integer.parseInt(possesionTextView.getText().toString()); 
       poss--; 
       possesionTextView.setText("" + poss); 
       iCount++; 
      } 

} 

についての考えを持っています。私はSurfaceViewを使用し、ワーカースレッドを使用します。 textviewはmainthreadに作成されているので、 "poss"のアップデートをworkerスレッドがそれに触れることができないのでメインスレッドに戻す必要があります。

これは、メモリ消費量が高くなる可能性があり、GCがそのまま使用できるかどうかわかりません。

Runnableオブジェクトを静的にするためにIdeaが付属していましたが、内部クラスのため、これはできません。文脈を作ることはどうですか、それは方法ですcntDownPossesion静的 - メソッドが静的ならば、Innerclass自体は静的ではありませんか?

+0

何も 'possesionTextView'と' iCount'あるインスタンス変数 –

答えて

2

実際にパフォーマンスのボトルネックと判断した場合、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); 
} 
+0

良い解決策であれば、静的行うことができますが、あなたは私のコードでのパフォーマンスのボトルネックがあると思いますか? _私はキャンバスにテキストを描画することができますが、xml-layoutを使用する方がはるかに簡単です – java

+1

私はわかりません - あなたのコードはありません。メモリ使用量やUIの遅延を監視するのはあなた次第です –

関連する問題