私は、ビットマップオブジェクトの束をインスタンス化するアプリ開発しています(キャッシュビットマップを持っているなどのボタンを、ので、彼らは何度も何度もレンダリングを取得する必要はありません)アンドロイド:今すぐアプリにメモリをクリーンアップ破壊
私はhuaweiモバイルデバイスでアプリケーションを繰り返し実行して起動すると、アプリケーションがビットマップ用にいくつかのメモリを割り当てようとしているところでOutOfMemoryExceptionを取得することに気付きました。 だから私はそれが問題を作るビットマップだと思います。私はbitmap.recycle()メソッドがあることを知っています。
今私の質問:メモリをクリーンアップするのがベストプラクティスですか? なぜクリーンアップ目的で実装できるView :: onDestroy()のようなViewメソッドがありませんか?
編集:だから私は、この割り当てられたデータがどこかにリサイクルする必要がありますね
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(this.getDefaultBitmap(), 0, 0, paint);
}
private Bitmap getDefaultBitmap(){
if(mBitmapDefault == null){
mBitmapDefault = Bitmap.createBitmap(8*radius, 8*radius, Config.ARGB_8888);
Canvas canvas = new Canvas(mBitmapDefault);
this.drawDefault(canvas);
return mBitmapDefault;
}
return mBitmapDefault;
}
...:例
私の "CirclyButton"(ボタンを拡張する)クラスは常にキャッシュビットマップonDrawを描きますか?
ですが、これを行うには便利な方法がいくつかあります。いくつかのボタンがあるかもしれないと思ってください。 – stoefln
それらを配列に格納し、それらを繰り返します。これらはレイアウトやコードで作成されていますか?コード内の – Jong
うーん、私は分からない...ちょうどそれがいくつかのオブジェクトを見逃すことが簡単だと思います... – stoefln