は、以下のリンクから覗いあり:、具体的にGLSurfaceView code sample匿名クラスは外部参照を有効にしますか?
、そのページ上の2番目のコードブロックに次の関数を見てください:ここで私を混乱させる
public boolean onTouchEvent(final MotionEvent event) {
queueEvent(new Runnable() {
public void run() {
mRenderer.setColor(event.getX()/getWidth(), event.getY()/getHeight(), 1.0f);
}
});
return true;
}
何アノンのRunnableは非常に多くを参照することです局所的な "event"オブジェクトですが、実際には完全に別のスレッドでrunnableを実行してしまいます。あるいは、ローカルなref-within-anon-classの使い方の種類が実際には "イベント"オブジェクトのリファレンスカウントで+ 1を実行するので、anon Runnableがまだ呼吸している限り、周囲に固執するでしょうか?
また、MotionEvenが最終版と宣言されているという事実は、これと関連がありますか?
P.S. (私の主な関心事ではありませんが)関連する質問として、 "イベント"の代わりに(またはそれに加えて)匿名クラスの内部で "int x"のようなプリミティブを参照するとどうなりましたか? (プリミティブのrefカウントを+1することはできないので見てください)。
内部クラスは、囲むクラスで宣言された(非最終的な)インスタンス変数と静的変数を参照することもできます。 –