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);
    }
}

次に、呼び出し先は、作成コードを本体に含めるMyService.sendMessage(ctx, arg)代わりに、実行するだけです。Intent

それは勝利のように思えます。たとえば、モジュール間sendMessageで名前を同期する必要がないなど、覚えておきたいことが少なくなります。ただし、Googleの音楽アプリでは、オープンソースであることがあまり見られないので、欠点があるのではないかと思います。慣例に固執する必要があります。"send message""my_arg"

4

3 に答える 3

1

それは良い習慣です。このパターンは、Android開発者ガイド(サンプル)にあります。

于 2012-09-23T07:13:17.923 に答える
1

より一般的な文脈であなたの質問に答えさせてください。つまり、プログラミングアプローチは静的対シングルトンです。これらは私が検討する代替案だからです。

メソッドや定数などへのグローバルアクセスに静的ソリューションを使用するのは好みの問題のようです。

一般的に使用される代替手段の1つは、オブジェクトのインスタンスを1つだけ作成し、これを使用してメソッドにアクセスするシンゲトンアプローチです。したがって、あなたの場合も、代わりにシグルトンを使用することができます-私はあなたが参照しているGoogleコードを見ていませんが、代わりにシグルトンパターンを見ても驚かないでしょう。

これについてはいくつかの議論がありますが、一般的にシングルトンを使用すると、静的よりもはるかに簡単にコードを再利用してオブジェクトの状態を制御できます。主な違いは、シングルトンはインターフェースを実装できるため、それらを渡すことができるということです。

ただし、いくつかのユーティリティメソッドに簡単にアクセスする必要がある場合は、静的ソリューションを使用します。これは、IMHOの実装と使用がより簡単で高速だからです。

于 2012-09-23T07:15:55.573 に答える
1

これは、これを処理するためのユーティリティメソッドを持っているようなものです。

AndroidのサンプルコードではGCM、同様のことを行っています。

于 2012-09-23T07:31:08.263 に答える