在哪里定义自定义方法

时间:2014-02-02 23:46:26

标签: java android

假设myFunction()MainActivity类都使用了MyBroadcastReceiver。现在,我只是将myFunction设置为MainActivity的public static方法,所以在MyBroadcastReceiver中我只是将函数称为MainActivity.myfunction()。我不确定这是否是一种公认​​的做法,我希望有人可以为我提供一些启示。

3 个答案:

答案 0 :(得分:0)

这可能取决于所讨论的方法的作用。

如果它是一个可以是静态的简单助手类型方法,你可以在任何地方创建它,但是这些方法的单独助手类将帮助你保持代码清洁。

您还可以创建自定义应用程序类并将方法放在那里。您可以轻松访问应用程序类并从那里使用它。

要记住的一件事是,您需要注意不要泄漏内存,尤其是当您将Context对象传递给此类方法时。您可以传递上下文,但要小心使用它。如果您只是在静态方法中使用它,那没关系。如果将其分配给另一个静态变量,则可能会发生内存泄漏。

答案 1 :(得分:0)

我认为这不是正确的方法。但是,这取决于使用myFunction()方法的资源。如果你不使用某些特定的MyActivity个实例并且你说它是一个“独立”的方法,我会在这样的单例中声明它:

public class YourPublicFunctions extends Application {
  private static Context context;     // Just if needed

  // Just if needed
  public void onCreate(){
    super.onCreate();
    YourPublicFunctions.context = getApplicationContext();
  }  

  public int myFunction() {
    ...
  }
}

所以这样,要调用它,你可以使用:

YourPublicFunctions myfuncs = ((YourPublicFunctions) getApplicationContext());
int value = myfuncs.myFunction();

注意:这种方法是内存泄漏安全的。

答案 2 :(得分:0)

我想说,从严格的OOP方法来看,它完全取决于两个类交互的上下文。

我可以想到三个方法:

  1. myFunction()属于第三类

    public class Communicator
    {
         public static myFunction()
         {
    
         }
    }
    Communicator.myFunction();
    
  2. myFunction()是继承的

     public MainActivity extends Communicator
     {}
     public MyBroadcastReceiver extends Communicator
     {}
     myFunction();
    
  3. myFunction()属于其中一个类

    <Your implementation>
    
  4. 祝你好运!