これはこれに関する私の2cになります:
1) ローカルで宣言する代わりに、クラス メンバー Message mMessage を宣言する必要があります。
JVMがメソッド呼び出しごとにローカル変数のエントリを作成する必要がないように、クラスメンバーが必要です..
2) クラス メンバーとして宣言する場合は、Message コンストラクターを使用するか、Message.obtain を使用する必要があります。
obtain()
オブジェクト プーリングを使用するため、常に使用します。
onDestroy
3) Message.obtain を使用する場合、クラス メンバーとして recycle を呼び出す必要があります。
nullify
.recycle だけを呼び出す必要はありませんclass variable
。
詳細については、Message.java
ソースを参照してください。
また、それを調べて、さらに何かが見つかった場合は投稿を更新します..
EDIT1:
もう一度ソース コードを確認してください.recycle()
オブジェクトを元に戻したい場合は、global object pool
メソッドを呼び出す必要があります. リサイクル メソッドを呼び出した後は、オブジェクトを使用しないでください. メソッド (ICS) をクイック リファレンス用にコピーする:
/**
* Return a Message instance to the global pool. You MUST NOT touch
* the Message after calling this function -- it has effectively been
* freed.
*/
public void recycle() {
clearForRecycle();
synchronized (sPoolSync) {
if (sPoolSize < MAX_POOL_SIZE) {
next = sPool;
sPool = this;
sPoolSize++;
}
}
}
「recyle()」を呼び出さない限り、インスタンスを使用できます。そのため、コード内でメソッドを呼び出すrecycle()
前に呼び出すことをお勧めします..呼び出しとオブジェクト..obtain()
onDestroy()
recycle()
nullify