将代码从Android的MainActivity类移动到自己的库或文件中

时间:2012-10-31 20:34:21

标签: android android-library

我是Java& Android开发,但我已经能够创建一堆乱七八糟的函数,子类和&粘贴在默认Android项目的MainActivity类中时非常正常的常量。

这些功能的目的是“ping home”以让我的服务器知道何时发生应用程序安装。实现此目的所需的唯一代码是notifyMyServer()标准代码块中的行MainActivity.java

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        notifyMyServer("install"); /* Notify MyServer of an Installation */

    }
}

粘贴使notifyMyServer()直接在MainActivity.java文件中工作的函数,子类,常量和导入对我来说似乎很脏。我希望能够将它们移动到自己的文件和/或库中,这样我就可以拖动它。将该文件放入我想要执行的其他应用程序中。

这通常如何完成?

2 个答案:

答案 0 :(得分:3)

至少有两种方法可以解决这个问题:

1)创建一个NotifyActivity类,可以按MainActivity进行扩展,如@Tim's answer中所述。这使用了继承。

2)创建一个NotifyServer类并在MainActivity内创建一个实例,作为类变量或onCreate()中的局部变量。这使用了合成。

通常在面向对象设计中,组合优先于继承。我强烈建议您了解这两个概念,因为您将在Java编程中反复使用它们。

答案 1 :(得分:2)

获取您的通知代码并创建一个只执行此通知的类(可以是库的一部分):

public class NotifyingActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        notifyMyServer("install"); /* Notify MyServer of an Installation */
    }
}

然后在您的MainActivity中,只需继承NotifyingActivity而不是Activity。然后,当您在MainActivity中调用super.onCreate()时,将自动发生通知。