私は私の質問がメモリ管理を扱うと信じています。メモリを管理するには?
私のプログラムは、一致するカードゲームです。私のレイアウトは12のImageViewで構成されています。 アクティビティファイルには、List ImageViewプロパティがあり、これらの12のImageViewを参照しています。 これはOnCreate
メソッドで行われます。このメソッドでは、クリックリスナーをImageViewsに設定します。
これは、クリックリスナーの例である:
private void clickImage(View view){
ImageView imgV = (ImageView) view;
imgV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView imgV = (ImageView) v;
new ShowCardImage().execute(Integer.valueOf(imgV.getTag().toString())-1);
}
});
}
ShowCardImageはImageViewのをクリックすると、該当する顔画像が表示されますAsyncTaskクラスです。
プログラムはそのまま動作します。カバー画像を描いた画像ビューを選択すると、顔画像に置き換えられます。
ここでは、選択された2枚のカードを比較する必要があります。これについてどうすればいいですか? 私は自動的にImageViewsのタグを表すのList Integerプロパティを考えています。
ここで2枚のカードを比較すると、別のAsyncTaskクラスを作成する必要があります。 もしそうなら、それはShowCardImageの実行後にリスナー内で呼び出されるべきです。または私はShowCardImageクラスで呼び出す必要があります。その場合は、doinbackground()
またはonpostexecute()
にあります。
また、現在のコードはメモリ管理に適していますか?私の理解から、イメージがクリックされるたびに、タスクはバックグラウンドで実行されます。
したがって、ユーザーがcard1を5回押すと言うことができます。これは、5つの別々のバックグラウンドタスクが同時に作成されることを意味しますか?ユーザーが選択したカードを追跡するListプロパティの同じタグの5つのアイテム。
これは、ShowCardImageクラスのonProgressUpdate()
で画像を変更すると、画像のsetEnabledをfalseに設定することで回避できますか?
または私は一覧Integer型のプロパティの項目1と2ということをチェックしなければならないのは、doinbackground
の初めに同じです。もしそうなら、タスク3,4,5の中で、タスク2の間にcard1タグを削除するときに、それを追加するのは何でしょうか。