将Context传递给非活动类的最佳实践?

Iir*_*kka 50 android android-context android-activity

所以,我的第一个主要应用程序几乎已编码,我正在对我的代码进行优化.该应用程序工作正常,但我不确定我将上下文传递给其他类的方式.我不想以错误的方式去做.我在Stackoverflow中偶然发现了关于上下文的文章和问题,这是将它传递给非活动类的正确方法.我也阅读了文档,但作为一名芬兰人,使得复杂的技术更难以理解.

所以,一个简单的问题.我将主要活动的上下文传递给其他(帮助者)类的方式是否正确?如果没有,我在哪里可以阅读更多关于这些情况的更好实践.

例如:MainActivity.java

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle sis){
        super(sis);
        new Helper(MyActivity.this).makeMyAppAwesome();
    }
}
Run Code Online (Sandbox Code Playgroud)

Helper.java

public class Helper {
    Context context;
    Helper(Context ctx){
        this.context = ctx;
    }

    public void makeMyAppAwesome(){
        makeBaconAndEggsWithMeltedCheese(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个可以吗?如果有人可以提供一个易于阅读的文章,并提供有关此主题的示例,那就太好了.

ET-*_*-CS 38

你可以这样做,使用ContextWrapper,如下所述.

例如:

public class MyContextWrapper extends ContextWrapper {

    public MyContextWrapper(Context base) {
      super(base);
   }

    public void makeMyAppAwesome(){
        makeBaconAndEggsWithMeltedCheese(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

并从Activity中调用非活动类

new MyContextWrapper(this);
Run Code Online (Sandbox Code Playgroud)

  • 如果我的类已经扩展了其他类,则不能使用它. (2认同)