2010-11-30 157 views
0

我曾經試圖將資源傳遞給我的Activity上使用的子類,我用兩種方式解決了這個問題,但不確定是否會導致內存泄漏。所以這是我到目前爲止有:處理資源的最佳方式

-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); 
     ... 
    } 
} 

b)

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類,其目的是要幫助你正是這一點:

基類爲那些誰需要 維持全球應用程序狀態。

否則,您在選項b中建議的替代方法是可行的。至少如果你只需要傳遞一個對應用程序上下文的引用,那麼你就可以訪問這些資源。

+0

感謝您的迴應!我想我會嘗試您所說的話,然後決定採用這種方式,還是繼續b。 – Mauricio 2010-11-30 19:52:03