この問題について検索してみましたが、それを試したのは私だけであるかのように何も見つかりませんでした。
基本的に、含まれているクラスのコンストラクター内でリソースアクセスを同期するために使用する静的オブジェクトがあり、時々それが機能しないことに気付きました!
private static Integer lock = Integer.valueOf(0);
public testClass(Context ctx)
{
if (ctx != null)
context = ctx.getApplicationContext();
else
context = null;
synchronized(lock)
{
Log.v(at_data.TAG, "I_AM_IN=" + I_AM_IN);
I_AM_IN = true;
// Access resource
//
// Multiple threads do enter here!
Log.v(at_data.TAG, "I_AM_OUT=" + I_AM_IN);
I_AM_IN = false;
}
}
私はおそらく何かを見逃していましたが、動作するはずがない!?というドキュメントは見つかりませんでした.
出力:
I_AM_IN=false
I_AM_IN=true
I_AM_OUT=true
I_AM_OUT=false
ただし、ほとんどの場合は次のようになります。
I_AM_IN=false
I_AM_OUT=true
I_AM_IN=false
I_AM_OUT=true