3

我是 Java 和 Android 开发的新手,但我已经能够创建一堆函数、子类和常量,当粘贴到MainActivity默认 Android 项目的类中时它们工作得非常好。

这些功能的目的是“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对我来说似乎很脏。我希望能够将它们移动到他们自己的文件和/或库中,这样我就可以将该文件拖放到我想要执行相同跟踪的其他应用程序中。

这通常是如何完成的?

4

2 回答 2

3

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

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

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

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

于 2012-10-31T22:09:06.187 回答
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() 时,通知将自动发生。

于 2012-10-31T21:56:05.923 回答