2010-11-30 6 views
0

Я как бы застрял, пытаясь передать ресурсы подклассу, используемому в моей деятельности. Я решил это двумя способами, но не уверен, что один или оба приведут к возможным утечкам памяти. Так вот, что я до сих пор:лучший способ обработки ресурсов

-myactivity (класс активности)

-global (глобальный класс к пакету, я использую, чтобы спасти глобальные переменные подъезд)

-subclass (подкласс, где я хочу использовать растяжимый ресурс)

)

public class global{ 
    public static Resources appRes; 
    .... 
} 

public class myactivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     global.resApp = this.getResources(); 
     ... 
    } 

    private void somewhere(){ 
     subclass tmp = new subclass(); 
     tmp.subclasmethod(); 
    } 
} 

public class subclass{ 
    public subclass(){...} 

    public void subclassmethod(){ 
     Bitmap bmp = BitmapFactory.decodeResource(Global.appRes, R.drawable.myres); 
     ... 
    } 
} 

б)

public class myactivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
    } 

    private void somewhere(){ 
     subclass tmp = new subclass(this.getContext()); 
     tmp.subclasmethod(); 
    } 
} 

public class subclass{ 
    Context context; 

    public subclass(Context context){ 
     this.context = context 
     ... 
    } 

    public void subclassmethod(){ 
     Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.myres); 
     ... 
    } 
} 

Спасибо заранее для вас обратной связи.

ответ

1

Если вы хотите, чтобы глобальный класс сохранял значения для всей прикладной программы, вы должны по крайней мере не использовать свой вариант a. Вместо этого, посмотрите на Application класса, который предназначен, чтобы помочь вам именно это:

Базовый класс для тех, кому необходимо поддерживать глобальное состояние приложения.

В противном случае альтернатива вы предлагаете в варианте б это ОК способ сделать это. По крайней мере, если вам нужно всего лишь передать ссылку на контекст вашего приложения, чтобы вы могли получить доступ к ресурсам.

+0

Спасибо за ответ! Я думаю, что попробую то, что вы говорите, а затем решите пойти с этим или просто продолжить с b. – Mauricio 2010-11-30 19:52:03

Смежные вопросы