如何避免静态上下文引用,当我需要使用活动情境?(How to avoid static contex

2019-10-16 14:08发布

阅读本主题后, 避免了内存泄漏有些疑惑引起。

如果我需要使用活动情境(例如:膨胀的视图PopupWindow类来说明一个弹出),我怎么能保持实际活动的情况下做到这一点? 如果我需要避免静态上下文引用做的唯一途径是建立在我的类中的属性? 和所有其他类,我需要,我需要做的实际活动范围内?

最新情况:

我想在不继承的上下文,就像我在我的应用程序类应用程序上下文,有一个叫做静态方法使用许多类使用这个实际活动方面getApplicationContext()声明。 这种方法遵循Singleton设计模式和正常工作。

Answer 1:

从您的评论链接代码的工作,为什么不这样做:

//my main activity
public class ExampleStaticReferenceActivity extends Activity {
        //...

    public void methodCalledWhenUserPressesButton(){
        LinearLayout masterLayout = (LinearLayout) findViewById(R.id.masterLayout);
        //now passing a reference to the current activity - elevine
        masterLayout.addView(ButtonCreator.createButton(this));
    }
}

//this class is in another package
public class ButtonCreator {
        //added a Context parameter - elevine
        public static Button createButton(Context context) {
                Button button;

                button = new Button(context);
                //... some configurations for button
                return button;
        }      

}


Answer 2:

当它运行的资源从而语境也将是无效的。而这将引起程序崩溃,因为你的活动将被OS杀死它的意义给予后台活动实例时,要在前台活动,以显示弹出。什么该博客说的是避免将activity.this,甚至getApplicationContext()可以做的工作..



文章来源: How to avoid static context reference when I need to use a activity context?