2

我刚刚开始 Android 开发,所以我想要一些关于代码风格的建议。Intent在进行调度的方法中编写调度程序对我来说似乎很好,比如

// in case it's not clear, names are meta-variables

public class MyService...
    ...

    public static void sendMessage(Context ctx, MyArgClass myArg) {
        Intent sendIntent = new Intent(ctx, MyService.class);
        sendIntent.setAction("send message");
        sendIntent.putExtra("my_arg", myArg);
        ctx.startService(sendIntent);
    }
}

然后,任何被调用者都只是 run MyService.sendMessage(ctx, arg),而不是Intent在他们的身体里有创建代码。

这似乎是一场胜利:当你想要 eg 时,要记住的东西更少sendMessage,而且你不必同步名称,比如模块"send message""my_arg"跨模块。但是,我在谷歌的音乐应用程序中并不经常看到他们开源,所以我想知道是否有缺点,我应该坚持惯例。

4

3 回答 3

1

这是一个很好的做法。此模式可在 android 开发人员指南(示例)中找到

于 2012-09-23T07:13:17.923 回答
1

请允许我在更一般的情况下回答您的问题,即编程方法静态与单一,因为这些是我会考虑的替代方案。

我发现使用静态解决方案对方法、常量等进行全局访问似乎是个人喜好问题。

一种常用的替代方法是单例方法,在这种方法中,您只创建一个对象的一个​​实例并使用它来访问您的方法。因此,在您的情况下,您也可以改用 sigleton - 我没有查看您所指的 Google 代码,但如果看到 singelton 模式,我不会感到惊讶。

您可能会发现一些关于此的讨论 - 但通常单例允许您重用代码和控制对象状态比静态更容易。主要区别在于单例可以实现接口,因此您可以传递它们。

但是,在我只需要轻松访问某些实用程序方法的情况下,我更喜欢静态解决方案 - 因为它们更容易和更快地实现和使用恕我直言。

于 2012-09-23T07:15:55.573 回答
1

这就像有一个 Utility 方法来处理这个问题。

GCM来自 Android 的示例代码中,他们做了类似的事情。

于 2012-09-23T07:31:08.263 回答