从包"库"调用android函数

时间:2014-09-10 02:37:56

标签: java android

我有几个Android应用程序,大约80%的代码是相同的,所以我把它放在一个包"库"。 Eclipse似乎把它称为一个库,尽管它是一个包,而不是像我需要实例化的类。设置事物的唯一位(即查找表)与包是分开的。这很好用,我可以调用包函数。有没有办法倒退。在我的每个应用程序中,我想要一个函数(即foo()),它在每个应用程序中执行不同的操作。我希望能够从包中的函数调用foo()。

1 个答案:

答案 0 :(得分:1)

将所有内容都视为库,甚至是主要应用程序。

然后我认为你的情况目前是这样的:

  • common-lib
  • app1,需要common-lib
  • app2,需要common-lib
  • app3,需要common-lib

您现在希望common-lib引用app1/2/3中的代码吗?这是不可能的,但也许你可以使用dependency injection来实现这一点。

依赖注入

common-lib中创建一个界面,用于定义您需要调用的操作。然后在app1/2/3中创建实现该接口的类。最后,让app1/2/3将其接口版本的实例传递给common-lib,以便它可以使用它。

common-lib

interface Named {
  void getName();
}

class MasterOfCeremonies {
  static void introduce(Named guest) {
    System.out.println("Please welcome " + guest.getName());
  }
}

app1

public StudentJohn implements Named {
  void getName() {
    return "John";
  }
}

app2

public StudentMary implements Named {
  void getName() {
    return "Mary";
  }
}

这样,app1可以调用MasterOfCeremonies.introduce(new StudentJohn()),然后app1可以调用MasterOfCeremonies.introduce(new StudentMary()),而common-lib会为每个人执行不同的操作。

附加说明

我不知道你的具体情况,但另一件可能有用的事情就是让另一个更平常的#34更常见。图书馆,像这样:

  • other-lib
  • common-lib,需要other-lib
  • app1,需要common-lib
  • app2,需要common-lib
  • app3,需要common-lib