私はたくさんの画面を持つアプリケーションを構築しています。 ほとんどの画面には、背景色の上にViewがあります。時には1つのビューの色を設定した後、#f14fb7、アプリでナビゲートし、他のビューの背景に言う:Androidは予期せずに背景の変更を表示します
私はよく
はここで奇妙なことが来るview.setBackgroundColor(色)を使用して、その色を変更します私がそれらを望んでいないで、その色に設定されています。 idを設定していないビューが時には表示されることもあります。そのため、これらのビューに対してsetBackgroundColorが呼び出される方法はありません。
これはまれであり、私が試したフローと一貫していません。
私がアプリを終了して再起動すると、すべて正常に動作します。
私は唯一のメモリリークの王ですが、私はより簡単な説明があることを願っています。
誰かがこれが起こる何らかの理由を考えることができますか?
*私のGalaxy S3で発生します。
public void setBackgroundColor(int color) {
if (mBGDrawable instanceof ColorDrawable) {
((ColorDrawable) mBGDrawable).setColor(color);
} else {
setBackgroundDrawable(new ColorDrawable(color));
}
}
あなたはそれを変更することを見ることができます:それは簡単ではありません...しかし、私はあなたが複数のビューで同じColorDrawable
を再利用していて、View.setBackgroundColor()
ソースコードを見てみた場合に推測コードなし
私たちはあなたが上にあなたの画面とビューをレイアウトしているかを正確に理解するためのいくつかのコードを参照する必要があります。 –
あなたは、色の最も外側の背景を持っている可能性がありますし、背景に透明または何か他のレイアウトがありますか? – Nezam
投稿するコードはありません。これはアプリ全体で発生するためです。 Nezam、それはそうではありません...この問題が発生しない時間は95%です。 背景を設定するコードはview.setBackgroundColor(color)...何も特別なものではありません。 奇妙なことは、その特定の画面とは何の関係もない他の画面に影響するということです...それがメモリリークだと思われる理由です。 – dors