2010-11-30 107 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